Edit report at https://bugs.php.net/bug.php?id=62413&edit=1
ID: 62413
User updated by: merlyn dot tgz at gmail dot com
Reported by: merlyn dot tgz at gmail dot com
Summary: sleep() strange behavior on pcntl signal event
-Status: Open
+Status: Closed
Type: Bug
Package: PCNTL related
Operating System: Ubuntu
PHP Version: 5.3.14
Block user comment: N
Private report: N
New Comment:
not a bug. I had reread about sleep() ) It's normal behavior, and useful, yeah
Previous Comments:
------------------------------------------------------------------------
[2012-06-25 19:38:36] merlyn dot tgz at gmail dot com
Description:
------------
If we install any signal handler and send that signal to our script proccess
while sleep() function is running script will immideatly continue running from
next string after sleep() execution. For reproduce you need to open two
consoles, in first of them execute the script
$ php test.php
in second - determine it's pid
$ ps ax|grep php test.php
and send signal to script proccess
$ kill -s SIGHUP 12990
In provided output example i had wait while first iteration of while loop run
completely, and after that have sent four times SIGHUP signal from other
terminal
Test script:
---------------
<?php
declare(ticks=1);
function echo_sig($sigNum)
{
echo "caught sig: $sigNum\n";
}
pcntl_signal(SIGHUP, 'echo_sig');
$a = 0;
while ($a < 5) {
$a++;
$startTime = time();
sleep(10);
echo "slept " . (time() - $startTime) . " seconds\n";
}
Expected result:
----------------
slept 10 seconds
caught sig: 1
slept 10 seconds
caught sig: 1
slept 10 seconds
caught sig: 1
slept 10 seconds
caught sig: 1
slept 10 seconds
Actual result:
--------------
slept 10 seconds
caught sig: 1
slept 4 seconds
caught sig: 1
slept 2 seconds
caught sig: 1
slept 0 seconds
caught sig: 1
slept 8 seconds
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62413&edit=1