Como contar de forma confiável e correta o número de processos em execução do mesmo script do PHP?

Como contar de forma confiável e correta o número de processos em execução do mesmo script do PHP?

O método atual e terrivelmente falho que uso é:

tasklist /FI "WINDOWTITLE eq BLABLABLA" /NH

A parte BLABLABLA acima é o título exato do processo atual. (Nem me fale sobre o fato de que ele não recebe suas próprias cotações e, portanto, não pode ser escapado/protegido facilmente/corretamente.)

O problema com isso é que assim que o título do processo difere em apenas um caractere, ele é considerado um script diferente de acordo com esta lógica. Por exemplo, tenho todos os tipos de dicas úteis adicionadas ao título da janela/processo o tempo todo, como:

Actual title (5 seconds left...)

E:

[FINISHED] Actual title

E:

Actual title (4 / 9 items left)

E:

Actual title (35% downloaded)

E assim por diante. Você entendeu. O título do processo muda frequentemente, por isso não é confiável para verificar o script exclusivo.

A única outra maneira que encontrei é referir-se a algo que eles chamam de "IMAGENAME" (que aparentemente significa "nome executável"):

tasklist /FI "IMAGENAME eq php.exe" ...

Isto é claropior aindajá que apenas listará qualquer script php.exe!

Minha experiência com o comando "lista de tarefas" (usando a saída --verbose e lendo seu manual) não revela nenhuma menção ao caminho do arquivo ou a qualquer ID exclusivo por arquivo ou algo parecido.

Por que não pode me deixar fazer algo assim?

tasklist /FI "FILEPATH eq BLABLABLA" /NH

?

Pensei em acompanhar os scripts em execução no banco de dados, mas parece terrivelmente ineficiente e também não confiável quando as coisas não saem exatamente como planejado e outros enfeites. Definitivamente seria melhor usar um comando fornecido pelo sistema operacional (a menos que o PHP tenha isso embutido, afinal).

Eu sei que o filtro "eq" aceita um asteriscona extremidade direita, mas isso não me ajuda pelos motivos acima.

Eurealmentenão tenho outra escolha a não ser sentar e analisar a saída completa da lista de tarefas e tentar remover quaisquer partes "dinâmicas" dos títulos dos processos para que eu possa contar o número de scripts em execução com o "mesmo" título do processo que o script que executa o código? Parece incrivelmente hackeado e estúpido. Istonão podeseja o caminho certo...

(PS: Você sabe, eu fico perplexo continuamente sobre quantas coisas e recursos "óbvios" (apenas para mim, aparentemente) estão faltando. É a mesma coisa no Windows e no Linux. Coisas que considero o "mínimo" é de alguma forma considerado supérfluo/inútil por todos os outros. Isso realmente me faz pensar...)

Responder1

Você pode refinar os resultados usando:

tasklist /fi "imagename eq php.exe" /v | find /i "Actual title"

informação relacionada