Команда Symfony3 - pcntl не работает

Я хочу прекратить выполнение моей команды из действия контроллера, поэтому я попытался использовать pcntl для достижения этой цели.

Это мой код (команда):

protected $should_stop = false;

protected function execute(InputInterface $input, OutputInterface $output)
{
    pcntl_signal(SIGHUP, [$this, 'stopCommand']);

    foreach($something as $row) {
       pcntl_signal_dispatch();

       if($this->should_stop === true) {
          break;
       }
       ...
    }
}

protected function stopCommand()
{
    $this->should_stop = true;
}

Но когда я запускаю свою команду, она отображает ошибку:

  [Symfony\Component\Debug\Exception\UndefinedFunctionException]                   
  Attempted to call function "pcntl_signal" from namespace "AppBundle\Command".

Я понятия не имею, как это исправить, не могли бы вы, ребята, помочь? Кроме того, если у вас есть какой-либо другой хороший способ остановить выполнение команды symfony из действия контроллера, было бы неплохо, если бы вы разместили решение здесь.


person SakuragiRokurota    schedule 22.12.2017    source источник
comment
Не дубликат, но очень связанный: заголовок stackoverflow.com/questions/33036773/ Скорее всего, у вас не скомпилирован PCNTL в CLI   -  person Jovan Perovic    schedule 22.12.2017
comment
Вы уверены, что у вас установлен и включен pcntl?   -  person Curlas    schedule 22.12.2017
comment
Думаю, вы должны проверить в своем app_dev.php/_profiler/phpinfo, включены ли функции. Либо перезапустите апач.   -  person Tim Zwinkels    schedule 22.12.2017
comment
Я проверил это сейчас, да, это включено. Любые другие идеи?   -  person SakuragiRokurota    schedule 22.12.2017


Ответы (1)


Я переустановил XAMPP на своем Mac, вот php -m:

[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imap
json
ldap
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib

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

person SakuragiRokurota    schedule 22.12.2017