php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #70708 Call to undefined function pcntl_sigwaitinfo
Submitted: 2015-10-13 13:10 UTC Modified: 2020-03-19 11:13 UTC
Votes:4
Avg. Score:4.2 ± 0.8
Reproduced:4 of 4 (100.0%)
Same Version:1 (25.0%)
Same OS:2 (50.0%)
From: damien dot lasserre at gmail dot com Assigned:
Status: Verified Package: PCNTL related
PHP Version: 7.0Git-2015-10-13 (Git) OS: OS X 10.10.5
Private report: No CVE-ID: None
 [2015-10-13 13:10 UTC] 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.


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2015-10-13 14:06 UTC] 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 */

:(
 [2016-06-18 02:28 UTC] 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);
 [2020-03-19 11:13 UTC] cmb@php.net
-Status: Open +Status: Verified -Type: Bug +Type: Documentation Problem
 [2020-03-19 11:13 UTC] cmb@php.net
Indeed, this function is defined conditionally, and that should be
documented.  See also
<https://www.php.net/manual/en/function.pcntl-sigwaitinfo.php#119613>.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 15:01:30 2024 UTC