Я использую команду linux nohup php filename.php &
создать фоновый процесс php. Проблема здесь в том, что, если есть какие-либо изменения в файлах, включенных в filename.php
или даже сам файл, я должен убить текущий процесс и запустить его снова. Есть ли способ предотвратить это, чтобы не требовалось перезапуска при обновлении кода, потому что я не хочу никаких простоев (из-за уничтожения и перезапуска процесса) в моем приложении. Если другого пути нет, то кто-нибудь предложил бы альтернативный подход?
РЕДАКТИРОВАТЬ 1
Я использую ZeroMQ для связи между основным процессом и этим фоновым процессом. Фоновый процесс связывается с конкретным портом TCP, скажем, 555. Теперь, если я пытаюсь запустить новый процесс и пытаюсь связать его с тем же портом, он выдаст ошибку, так как порт уже используется. И поэтому мне нужно убить процесс, прежде чем начинать новый.
РЕДАКТИРОВАТЬ 2
Пожалуйста, проверьте мой другой вопрос для подробного объяснения моей полной проблемы с примером кода.
Вы не можете обновить свой код во время работы скрипта. PHP даже не делает этого, когда он запускается с Apache. Однако PHP до начала нового запроса проверяет, должен ли он перезагрузить код.
Если производительность не является большой проблемой. Вы могли бы сделать что-то подобное самостоятельно. Имейте основной сценарий (который не должен измениться), слушайте в очереди. И запустите второй скрипт, используя proc_open, например, чтобы запустить второй скрипт и сериализовать данные по каналам. Теперь, когда используется второй скрипт, он будет перезагружаться для каждого запроса.
Других решений пока нет …