Отправка сигнала демону в php - PullRequest
1 голос
/ 12 апреля 2010

У меня есть демон, написанный на PHP, который работает на моем компьютере с Linux.

Я пытаюсь отправить ему сигнал через другой php-файл. Для этого я пытаюсь использовать функцию posix_kill. Но это не работает.

Когда я запускаю страницу php, я получаю сообщение об ошибке, что php компилируется без --enable-grep

Я хочу знать, как это включить? ИЛИ какой альтернативный способ отправки сигнала демону?

Ответы [ 3 ]

1 голос
/ 13 октября 2010

Единственный способ обработки сигналов в вашем PHP-скрипте - это перекомпилировать PHP с библиотекой PCNTL, которая предоставит вам необходимые инструменты / функции.

http://php.net/manual/en/book.pcntl.php

В противном случае вам нужно использовать обходные пути, такие как Упомянутый квамис : файловые флаги или блокировки и т. Д.

0 голосов
/ 14 апреля 2010

Попробуйте использовать общую память, блокировки или файлы. Отправка сигналов между процессами может не работать, если процесс принадлежит другому пользователю.

Использование файлов или блокировок, например, может помочь вам, если вам когда-либо понадобится масштабирование, поскольку его легче копировать, чем с помощью сигналов.

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

0 голосов
/ 12 апреля 2010

Если вы знаете идентификатор процесса, вы можете просто

exec( "kill -SIGKILL 1234", $return );
print_r( $return );

Или, если вы не знаете идентификатор процесса

exec( "pkill -KILL myDaemon", $r );
print_r( $return );

Чтобы найти все доступные сигналы , вы можете отправить:

shell> kill -l

Если у вас возникли проблемы, перенаправьте stderr на стандартный вывод:

exec( "pkill -KILL myDaemon 2>&1", $r );
print_r( $return );

Это покажет вам все сообщения об ошибках, которые могли появиться на терминале (если бы вы выполняли команду таким образом!).

...