С какими аргументами надо запустить PHP чтобы изменить название в top?
Есть скрипт который через exec запускает другие скрипты PHP. В процессе тестирование по неясным причинам некоторые скрипты работающие 24/7 просто повисают. Я так понимаю, это проблема PHP, а не самого кода. Задача стоит в том, чтоб делать killall -9 конкретного скрипта, чтоб не запустить случайно дубликат. Пока идея одна - как-то сделать так, чтоб у каждого скрипта было свое название процесса.
Вопрос, как это сделать?
Если есть другие предложение, как реализовать - готов выслушать.
Заранее благодарю.
PS: скриптов запущенных 200-400 и заниматься ловлей ведьм среди них как-то нет желания.
Не полностью то что вы хотели, но думаю сможет вам помочь:
// Получить идентификатор процесса (например, для проверки на уникальность)
$pid = getmypid();
// Проверить список всех процессов с pid из php
exec('ps aux', $m);
var_dump($m);
// Можете установить своё имя стартуемому скрипту (но работает только из крон и консоли)
$title = "my_php_id";
if (!cli_set_process_title($title)) {
echo "Unable to set process title for PID $pid...\n";
exit(1);
} else {
echo "The process title '$title' for PID $pid has been set for your process!\n";
}
Это я видел и не подходит. Не всегда понятно повис скрипт или где-то провисла команда подключения сокетс. Сами скрипты должны работать 24/7 без выключения. По факту иногда отваливается пару штук. Они висят в памяти и зависают на командах каких-то типа curl, где провисло подключение. Они продолжают ждать данные, а мне надо иногда просто убить и перезапустить. Добавить многопоточность или все возможные условия - сложно.
Сергей Савостин: Я таймауты добавил. Но вот не задача, походу это общая проблема curl в php (нашел много жалоб на эту тему). Ты ставишь таймаут на попытку соединения. Допустим ты соединился и отправил данные, а принимающая сторона подвисла при отдаче результата (часть данных пришло и curl ждет остатки). Твой скрипт автоматом тоже подвисает не смотря на расставленные таймауты. :(
А вы не хотите заменить exec на форк? Тогда скрипты можно будет контролировать. А вообще человек выше правильно сказал, простейшее решение - дать метку аргументом
alexdora: я понял, в любом случае выше человек правильно ответил, при запуске можно давать имя как аргумент скрипту
/usr/bin/php /my/script.php name_for_kill
затем идем сюда stackoverflow.com/questions/3510673/find-and-kill-...
и таким способом убиваем все что хотим по метке которую дали скриптам (в данном случае name_for_kill)