Wicked
Новичок
fastcgi + pcntl_fork
Я недавно сталкивался с ситуацией, когда надо было каким-либо способом запускать пхпшный скрипт в фоне. На тот момент это делалось с помощью функции pcntl_fork, когда форкнутый процесс вызывал system("php script.php ..."), и в этом месте нашелся баг, что реально распараллеливания не происходило, и главный процесс ждал завершения форкнутого. Разбираться со всей этой бесовщиной на тот момент не было ни желания, ни возможности, поэтому я просто заменил форк + system(...) на system("php script.php ... &") и жить стало легче. Но это не главное
Тогда же я заметил, что при использовании fastcgi + pcntl_fork после тестов в памяти оставалось много зомбированных fastcgi процессов, и со временем сервер вообще переставал обрабатывать пхп-запросы. Правильно ли я понимаю, что когда мы форкаем fastcgi-ного воркера, он как бы теряет связь с веб-сервером (nginx'ом), но т.к. при этом каждый воркер создается для обработки энного количества fastcgi-запросов, то он не завершается после завершения скрипта, а продолжает висеть в памяти?
Я недавно сталкивался с ситуацией, когда надо было каким-либо способом запускать пхпшный скрипт в фоне. На тот момент это делалось с помощью функции pcntl_fork, когда форкнутый процесс вызывал system("php script.php ..."), и в этом месте нашелся баг, что реально распараллеливания не происходило, и главный процесс ждал завершения форкнутого. Разбираться со всей этой бесовщиной на тот момент не было ни желания, ни возможности, поэтому я просто заменил форк + system(...) на system("php script.php ... &") и жить стало легче. Но это не главное

Тогда же я заметил, что при использовании fastcgi + pcntl_fork после тестов в памяти оставалось много зомбированных fastcgi процессов, и со временем сервер вообще переставал обрабатывать пхп-запросы. Правильно ли я понимаю, что когда мы форкаем fastcgi-ного воркера, он как бы теряет связь с веб-сервером (nginx'ом), но т.к. при этом каждый воркер создается для обработки энного количества fastcgi-запросов, то он не завершается после завершения скрипта, а продолжает висеть в памяти?