2015-05-13 4 views
0

У меня есть проблема с использованием pcntl на VM-сервере ubuntu.
У меня есть PHP-скрипт, создающий потоки, чтобы делать повторяющиеся вещи.
У моего сервера есть расширение pcntl для PHP.

с помощью команды php -me выход этого:
Undefined pcntl_signal_dispatch() с установленным pcntl

календарь
CType
завиток
Дата
дом
фильтр
хэш
Iconv

JSON LibXML
MBstring
MySQL
pcntl
PCRE
ПДО
PDO_MySQL
Pdo_Sqlite

POSIX Отражение
сессия
shmop
SimpleXML
SPL
SQLite
стандарт
токенизатор
XML
XmlReader
XmlWriter
почтовый
Zlib

Я добавил журналы в коде, так что я уверен, что pcntl_fork, pcntl_wait и pcntl_wexitstatus выполняются с помощью сценария.
Но на линии с помощью pcntl_signal_dispatch(), он упал с ошибкой:

Вызов неопределенной функции pcntl_signal_dispatch()

Любой ключ приветствуется :)

ответ

1

В отличие от большинства (если не все) функций PCNTL, pcntl_signal_dispatch() требует PHP 5.3 или новее: http://php.net/pcntl_signal_dispatch

Итак, вы либо действительно работаете o ld PHP, или функция отключена в php.ini, но моя догадка будет первой.

+0

О, бог, действительно, PHP-версия сервера - это 'PHP 5.2.10'. Есть ли способ заставить его работать на более раннем PHP? (другая функция, выполняющая ту же работу, какой-то код для записи ...). Мы не можем обновлять PHP из-за регрессионных рисков ... – Random

+0

Нет, я так не думаю. И вы действительно не должны ... регрессионные риски могли быть оправданием, в то время как PHP 5.2 по-прежнему официально поддерживался, но этого не было в течение более 4 лет. И регрессии можно проверить на ... вы можете подготовиться к этому. – Narf

+0

На самом деле существует 2 решения: использование 'declare (ticks = 1)' сохранение текущей версии PHP (5.2.10) или обновление до PHP 5.3, чтобы использовать 'pcntl_signal_dispatch()' (к сожалению, только клиент может решить, выслушав мое мнение). Благодаря ! – Random