php-fpm и pcntl_fork

Я выдаю серьезную проблему, используя php-fpm и pcntl_fork.

Оба работают довольно хорошо, но когда они вместе, я «теряю» стандартный вывод для веб-браузера. Это означает, что вилка работает, но стандартный вывод (клиентский браузер) полностью потерян для всех (всех детей и родителей).

Вне fpm (например, в командной строке) вилка работает так, как ожидалось (все дочерние элементы выводятся на вывод терминала).

У кого-то что-то работает или это общая проблема с php-fpm?


person user1404352    schedule 18.05.2012    source источник


Ответы (1)


Хорошо, я наконец нашел хороший способ...

Код, который я использую (который можно найти во многих местах), использует функцию exit(0) для дочернего процесса, чтобы завершить его. Но на php-fpm это также убивает основной процесс... Вот почему он не выводился после первого дочернего вызова...

Вот решение (найдено в комментарии пользователя pcntl_fork):

register_shutdown_function(create_function(
    '$pars', 'ob_end_clean(); posix_kill(getmypid(), SIGKILL);'
), array());

Это убьет, как и ожидалось, любого зомби в конце скрипта, не убивая основной процесс.

person Deisss    schedule 18.05.2012