Как надежно и правильно подсчитать количество запущенных процессов одного и того же скрипта из PHP?

Как надежно и правильно подсчитать количество запущенных процессов одного и того же скрипта из PHP?

Текущий, ужасно несовершенный метод, который я использую, таков:

tasklist /FI "WINDOWTITLE eq BLABLABLA" /NH

Часть BLABLABLA выше — это точное название текущего процесса. (Даже не заставляйте меня начинать с того факта, что он не имеет собственных кавычек и, следовательно, не может быть легко/должным образом экранирован/защищен.)

Проблема в том, что как только заголовок процесса отличается хотя бы на один символ, он считается другим скриптом согласно этой логике. Например, у меня все время добавляются всевозможные полезные подсказки к заголовку окна/процесса, например:

Actual title (5 seconds left...)

И:

[FINISHED] Actual title

И:

Actual title (4 / 9 items left)

И:

Actual title (35% downloaded)

И так далее. Вы поняли. Название процесса часто меняется, поэтому оно ненадежно для проверки уникальности сценария.

Единственный другой способ, который я нашел, — это сослаться на нечто, называемое «IMAGENAME» (что, по-видимому, означает «имя исполняемого файла»):

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

Это конечноеще хужетак как он просто выведет список всех скриптов php.exe!

Мои эксперименты с командой «tasklist» (с использованием вывода --verbose и прочтением ее руководства) не выявили никаких упоминаний о пути к файлу или каком-либо уникальном идентификаторе файла или чем-либо подобном.

Почему он не позволяет мне сделать что-то подобное?

tasklist /FI "FILEPATH eq BLABLABLA" /NH

?

Я думал о том, чтобы самому отслеживать запущенные скрипты в базе данных, но это кажется ужасно неэффективным и ненадежным, когда что-то идет не так, как планировалось и все такое. Определенно лучше использовать команду, предоставляемую ОС (если только PHP не имеет встроенной функции).

Я знаю, что фильтр "eq" принимает звездочкув правом конце, но это мне не помогает по вышеуказанным причинам.

Я делаюДействительнонет другого выбора, кроме как сидеть и анализировать полный вывод списка задач и пытаться удалить любые «динамические» части названий процессов, чтобы я мог посчитать количество запущенных скриптов с «таким же» названием процесса, что и скрипт, запускающий код? Это кажется невероятно хакерским и глупым. Этоне могубыть правильным путем...

(P.S.: Знаете, я снова и снова прихожу в недоумение от того, как много «очевидных» (судя по всему, только мне) вещей и функций просто отсутствуют. Это касается и Windows, и Linux. То, что я считаю «абсолютным минимумом», почему-то все остальные считают излишним/бесполезным. Это действительно заставляет меня задуматься...)

решение1

Вы можете уточнить результаты, используя:

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

Связанный контент