У меня есть тонна строк в MySQL.Я собираюсь выполнить пинг по ip в каждой из этих строк, поэтому я хотел бы разделить нагрузку.Я сделал скрипт, который запускает новый процесс для каждых 100 строк в базе данных.Проблема в том, что родительский сценарий, похоже, ожидает завершения каждого из дочерних сценариев, прежде чем приступить к следующему, что аннулирует всю цель.
Это код важной части родительского сценария
for($i = 0; $i < $children_num; $i++)
{
$start = $bn["dots_pr_child"] * $i;
exec("php pingrange.php $i $start $bn[dots_pr_child]");
}
Стоит отметить, что каждый из этих дочерних процессов запускается exec("ping")
один раз для строки MySQL.Я думаю, что это часть проблемы.
Я опубликую дополнительную информацию и код по запросу.
Есть ли способ заставить экземпляр PHP работать в фоновом режиме, ина передний план продолжить?Предпочтительно родительский скрипт должен взять 0,0001 сек и вывести «Готово».В настоящее время он работает в течение 120 секунд.
Спасибо за любую помощь
Редактировать: Я пытался добавить &
после процесса.Можно было бы подумать, что из-за этого функция exec вернется мгновенно, но нет.
Редактировать: попытка exec("php pingrange.php $i $start $bn[dots_pr_child] 2>&1 &");
без успеха
Редактирование: попытка exec("nohup php pingrange.php $i $start $bn[dots_pr_child] &");
без успеха