очередь сообщений — Как создать правильный фоновый процесс PHP?

Я использую команду linux nohup php filename.php & создать фоновый процесс php. Проблема здесь в том, что, если есть какие-либо изменения в файлах, включенных в filename.php или даже сам файл, я должен убить текущий процесс и запустить его снова. Есть ли способ предотвратить это, чтобы не требовалось перезапуска при обновлении кода, потому что я не хочу никаких простоев (из-за уничтожения и перезапуска процесса) в моем приложении. Если другого пути нет, то кто-нибудь предложил бы альтернативный подход?

РЕДАКТИРОВАТЬ 1

Я использую ZeroMQ для связи между основным процессом и этим фоновым процессом. Фоновый процесс связывается с конкретным портом TCP, скажем, 555. Теперь, если я пытаюсь запустить новый процесс и пытаюсь связать его с тем же портом, он выдаст ошибку, так как порт уже используется. И поэтому мне нужно убить процесс, прежде чем начинать новый.

РЕДАКТИРОВАТЬ 2

Пожалуйста, проверьте мой другой вопрос для подробного объяснения моей полной проблемы с примером кода.

1

Решение

Вы не можете обновить свой код во время работы скрипта. PHP даже не делает этого, когда он запускается с Apache. Однако PHP до начала нового запроса проверяет, должен ли он перезагрузить код.

Если производительность не является большой проблемой. Вы могли бы сделать что-то подобное самостоятельно. Имейте основной сценарий (который не должен измениться), слушайте в очереди. И запустите второй скрипт, используя proc_open, например, чтобы запустить второй скрипт и сериализовать данные по каналам. Теперь, когда используется второй скрипт, он будет перезагружаться для каждого запроса.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]