¿Cómo contar de manera confiable y correcta la cantidad de procesos en ejecución del mismo script desde PHP?

¿Cómo contar de manera confiable y correcta la cantidad de procesos en ejecución del mismo script desde PHP?

El método actual, terriblemente defectuoso, que uso es:

tasklist /FI "WINDOWTITLE eq BLABLABLA" /NH

La parte BLABLABLA anterior es el título exacto del proceso actual. (Ni siquiera me hagas hablar del hecho de que no tiene sus propias comillas y, por lo tanto, no se puede escapar/proteger fácilmente/adecuadamente).

El problema con esto es que tan pronto como el título del proceso difiere incluso en un carácter, se considera un script diferente según esta lógica. Por ejemplo, tengo todo tipo de sugerencias útiles agregadas al título de la ventana/proceso todo el tiempo, como por ejemplo:

Actual title (5 seconds left...)

Y:

[FINISHED] Actual title

Y:

Actual title (4 / 9 items left)

Y:

Actual title (35% downloaded)

Etcétera. Tú entiendes. El título del proceso cambia con frecuencia, por lo que no es confiable para verificar el script único.

La única otra forma que he encontrado es hacer referencia a algo que llaman "IMAGENAME" (que aparentemente significa "nombre ejecutable"):

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

Esto es por supuestopeor aún¡ya que solo enumerará cualquier script php.exe!

Mi experimentación con el comando "lista de tareas" (usando la salida --verbose y leyendo su manual) no revela ninguna mención de la ruta del archivo ni ninguna identificación única por archivo ni nada por el estilo.

¿Por qué no me deja hacer algo como esto?

tasklist /FI "FILEPATH eq BLABLABLA" /NH

?

He pensado en realizar un seguimiento de los scripts en ejecución yo mismo, en la base de datos, pero parece terriblemente ineficiente y poco confiable cuando las cosas no salen exactamente según lo planeado y todo eso. Definitivamente sería mejor usar un comando proporcionado por el sistema operativo (a menos que PHP lo tenga integrado después de todo).

Sé que el filtro "eq" acepta un asterisco.en el extremo derecho, pero eso no me ayuda por las razones anteriores.

¿Yoen realidad¿No tengo otra opción que sentarme y analizar el resultado completo de la lista de tareas e intentar eliminar cualquier parte "dinámica" de los títulos de los procesos para poder contar la cantidad de scripts en ejecución con el "mismo" título de proceso que el script que ejecuta el código? Se siente increíblemente hacky y tonto. Élno puedoser el camino correcto...

(PD: Sabes, sigo desconcertado una y otra vez sobre cuántas cosas y características "obvias" (aparentemente solo para mí) faltan. Es lo mismo tanto en Windows como en Linux. Cosas que considero las El "mínimo básico" de alguna manera es considerado superfluo/inútil por todos los demás. Realmente me hace preguntarme...)

Respuesta1

Puede refinar los resultados utilizando:

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

información relacionada