Exec-команды SSI/PHP завершаются при отправке ответа, верно?

Скажем, у меня есть скрипт SSI, который использует exec, или скрипт PHP, который использует exec или proc_open, чтобы запустить процесс, когда пользователи отправляют данные из своего браузера на мой сервер. Правильно ли я понимаю, что этот порожденный процесс завершится, когда сервер завершит обработку запроса и отправит ответ обратно на сервер? Использую ли я SSI или PHP, порожденный процесс завершится в этот момент, верно?

И, следовательно, нет способа "поддерживать процесс" между отдельными запросами, поэтому мне нужно написать программу-демон, если я хочу взаимодействовать с тем же процессом при последующих запросах?

1 ответ

Решение

На самом деле поддерживать процесс довольно просто, мы делаем это постоянно:

Создайте шеллскрипт (wrapper.sh) как

#!/bin/bash
/path/to/some/process < /dev/zero > "$1" &
echo "Blah"

Мы нашли echo "Blah" быть необходимым в некоторых системах.

Спавн процесс с wrapper.sh "/path/to/output/file", он вернется почти сразу - при более позднем вызове скрипта вы можете прочитать /path/to/output/file чтобы получить результат.

Другие вопросы по тегам