Демонизация PHP-скрипта без pcntl_fork () - PullRequest
2 голосов
/ 29 июля 2011

Я работаю над встроенной системой, которая запрограммирована на PHP 4.4.9 - к сожалению, без расширения PCNTL.

Мне нужно создать скрипт, который будет работать в фоновом режиме в качестве демона.Обычно вы делаете это, используя fork() или, в случае PHP, pcntl_fork() - но эта функция недоступна.Также отсутствует оболочка, поэтому я не могу использовать стандартные инструменты.

Итак, какие есть еще способы для чистого запуска процесса в фоновом режиме?

1 Ответ

1 голос
/ 29 июля 2011

Как говорит kingCrunch, вам действительно нужно обновить.

Во-первых, создание демона - это нечто большее, чем просто вызов pcntl_fork ().Возможно, вы захотите прочитать FAQ по программированию Unix и FAQ по сокетам Unix .

Далее вы не упомянули, как намереваетесь решить проблему параллелизма -в то время как разветвление является одним из решений этой проблемы, это не единственная причина использования fork () в демоне.

Итак, вам действительно нужно решить 2 проблемы: сначала как вы демонизируете программу, а затем как обрабатываете параллелизм.

Обратите внимание, что один из подходов к последнему, который устраняет первое, состоит в запускесервер из [x] inetd.

Другой подход к решению проблемы параллелизма - запустить однопоточный сервер и использовать socket_select (или stream_select) для мультиплексирования соединений - но я не уверен, насколько хорошо это поддерживаетсяв PHP 4 - здесь есть хороший пример .

Простым решением было бы написать простую программу-обертку на C, используя daemon () для начальной загрузки программы,Или вы можете запустить его прямо из inittab.Или для решения со сложными средствами управления взгляните на daemontools

от DJB
...