Я пытаюсь запустить bash-скрипты на PHP асинхронно, мои текущие скрипты ждут, пока первый скрипт не будет запущен, прежде чем он запустит следующий:
for ($i = 0; $i < 10; $i++) {
exec('php /var/www/index.php $(nmap -p 80 google.com)');
}
Я выяснил, чтобы запустить асинхронный, я должен поставить&’в конце моего сценария, чтобы запустить его на переднем плане:
for ($i = 0; $i < 10; $i++) {
exec('php /var/www/index.php $(nmap -p 80 google.com) &');
}
Этот скрипт передаст результат $ (nmap -p 80 google.com) в мой index.php и запустится на переднем плане. Проблема в том, что мне нужно отменить этот процесс, как только сценарий будет завершен. Я пытался сделать это так:
for ($i = 0; $i < 10; $i++) {
exec('php /var/www/index.php $(nmap -p 80 google.com) $BASHPID &');
}
Я передаю второй параметр в index.php ($ BASHPID) — идентификатор процесса этого сценария bash, затем внутри этого файла index.php я запускаю другую команду exec, чтобы завершить этот процесс. Проблема в том, что он передает неправильный идентификатор процесса и в конце не убивает процесс.
Какие-либо предложения?
Задача ещё не решена.
Других решений пока нет …