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