Bug->Doc #70708 [Opn->Ver]: Call to undefined function pcntl_sigwaitinfo
| From: | cmb@php.net | Date: | Thu, 19 Mar 2020 11:13:42 +0000 |
| Subject: | Bug->Doc #70708 [Opn->Ver]: Call to undefined function pcntl_sigwaitinfo | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-17436@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
Updated by: cmb@php.net
Reported by: damien dot lasserre at gmail dot com
Summary: Call to undefined function pcntl_sigwaitinfo
-Status: Open
+Status: Verified
-Type: Bug
+Type: Documentation Problem
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:
Indeed, this function is defined conditionally, and that should be
documented. See also
<https://www.php.net/manual/en/function.pcntl-sigwaitinfo.php#119613>.
Previous Comments:
------------------------------------------------------------------------
[2016-06-18 02:28:37] dave at mudsite dot com
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);
------------------------------------------------------------------------
[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