Мне нужно некоторое время запускать код в фоновом режиме после отправки вывода клиенту. Но соединение блокируется и не закрывается, пока работа не будет завершена.
Посмотрел: Как мне закрыть соединение раньше? https://www.php.net/manual/en/features.connection-handling.php#71172 (и другие связанные ответы)
Я получил код:
Я пробовал оба: server.max-keep-alive-idle = 0 server.max-keep-alive-запросы = 0 Взято из:
Если ваш код должен выполнить обработку после отправки ответа CGI, тогда ваш код должен сделать это в отдельном контексте выполнения, поскольку CGI выполнил свою работу когда он отправляет ответ CGI, и lighttpd затем отправляет сигнал SIGTERM вашему сценарию.
Один из способов запустить код после отправки ответа CGI - это запустить код в фоновом режиме после отправки ответа CGI. См. https://www.php.net/manual/en/function.posix-setsid.php
Другой способ заключается в том, что ваш CGI может поместить задание в очередь заданий и получить автономный демон, отдельный от CGI, для обработки очереди, например, с помощью сервера redis. .