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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: damien dot lasserre at gmail dot com
New email:
PHP Version: OS:

 

 [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 20:01:29 2024 UTC