Bug #70708 [Com]: Call to undefined function pcntl_sigwaitinfo
| From: | dave at mudsite dot com | Date: | Sat, 18 Jun 2016 02:28:38 +0000 |
| Subject: | Bug #70708 [Com]: Call to undefined function pcntl_sigwaitinfo | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-201706@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=70708&edit=1
ID: 70708
Comment by: dave at mudsite dot com
Reported by: damien dot lasserre at gmail dot com
Summary: Call to undefined function pcntl_sigwaitinfo
Status: Open
Type: Bug
Package: PCNTL related
Operating System: OS X 10.10.5
PHP Version: 7.0Git-2015-10-13 (Git)
Block user comment: N
Private report: N
New Comment:
Correct. Darwin appears not to implement sigwaitinfo() or sigtimedwait(): http://opensource.apple.com//source/xnu/xnu-1456.1.26/bsd/sys/signal.h
However, on my macos machine I can accomplish what you're trying to do, possibly by doing this:
<?php
declare(ticks=1);
class Foo {
function signaltest() {
pcntl_signal(SIGUSR1, array($this, 'restart'));
}
function restart($signo) {
print_r("Restarting From $signo");
}
}
$f = new Foo();
$f->signalTest();
posix_kill(posix_getpid(), (int)SIGUSR1);
sleep(1);
Previous Comments:
------------------------------------------------------------------------
[2015-10-13 14:06:15] damien dot lasserre at gmail dot com
I think the methode doesn't work on MAC :( but after configuration with support pcntl if i
check the file main/php_config.h :
/* Define to 1 if you have the `sigtimedwait' function. */
/* #undef HAVE_SIGTIMEDWAIT */
/* Define to 1 if you have the `sigwaitinfo' function. */
/* #undef HAVE_SIGWAITINFO */
:(
------------------------------------------------------------------------
[2015-10-13 13:10:42] damien dot lasserre at gmail dot com
Description:
------------
---
From manual page: http://www.php.net/function.pcntl-sigwaitinfo
---
Hi,
When i try to use pcntl_sigwaitinfo function, an error occur :
Uncaught Error: Call to undefined function pcntl_sigwaitinfo, but pcntl extension was installed and
activated...
<?php
//...
while($running) {
/** @var int $pid */
$pid = pcntl_waitpid(-1, $status, WNOHANG);
if($pid) {
$sig = pcntl_wstopsig($status);
if($sig === SIGUSR1) {
$this->restartService($pid);
}
}
/** Restart all services if SIGHUP send as SMP process */
pcntl_sigwaitinfo(array(SIGUSR1), $info);
if((int)$info['signo'] === SIGUSR1) {
$this->restart();
}
}
//...
?>
Below: (php -i | grep pcntl)
pcntl
pcntl support => enabled
OLDPWD => /tmp/php-src/ext/pcntl
$_SERVER['OLDPWD'] => /tmp/php-src/ext/pcntl
Regards.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=70708&edit=1