note 110048 added to function.pcntl-signal-dispatch
| From: | admin at infarmer dot ru | Date: | Fri, 14 Sep 2012 12:24:48 +0000 |
| Subject: | note 110048 added to function.pcntl-signal-dispatch | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-190763@lists.php.net to get a copy of this message | ||
<?php
function signal_handler($signal) {
global $i;
print "Caught SIGALRM ($i) \n";
pcntl_alarm(1);
}
pcntl_signal(SIGALRM, "signal_handler", true);
pcntl_alarm(1);
// ÐбÑабоÑка Ñигнала на
каждом Ñике
declare(ticks = 1);
while(true){
$i=1;
// ÐºÐ°ÐºÐ°Ñ Ñо ÑложнаÑ
вÑÑиÑлиÑелÑÐ½Ð°Ñ ÑабоÑа,
while($i<10000000){
$i++;
}
echo 'end'.PHP_EOL;
// ÐдиноÑÐ°Ð·Ð¾Ð²Ð°Ñ Ð¾Ð±ÑабоÑка
Ñигнала
# pcntl_signal_dispatch();
}
?>
OUTPUT:
> php test.php
Caught SIGALRM (1376814)
Caught SIGALRM (4130636)
Caught SIGALRM (6884781)
Caught SIGALRM (9637491)
end
Caught SIGALRM (1013758)
^C
========
ТепеÑÑ ÐµÑли
закомменÑиÑоваÑÑ declare(ticks = 1); и
ÑаÑкомменÑиÑоваÑÑ pcntl_signal_dispatch();
Увидим ÑледÑÑÑее:
OUTPUT:
> php test.php
Caught SIGALRM (10000000)
end
Caught SIGALRM (10000000)
^C
РвÑе ÑÑо ознаÑаеÑ, ÑÑо
Ñигнал в пеÑвом ÑлÑÑае ( declare(ticks = 1)
) пÑеÑÐ²ÐµÑ ÑабоÑÑ ÑкÑипÑа,
вÑÐ¿Ð¾Ð»Ð½Ð¸Ñ Ð¿ÑивÑзаннÑÑ
ÑÑнкÑÐ¸Ñ Ð¸ веÑнеÑÑÑ Ð¸
пÑÐ¾Ð´Ð¾Ð»Ð¶Ð¸Ñ ÑабоÑÑ. РпÑи
иÑполÑзовании pcntl_signal_dispatch() -
обÑабоÑка Ñигнала бÑдеÑ
пÑоизведена когда Ð¼Ñ Ñами
ÑÑо Ñкажем.
ÐÑÑаÑи, еÑли вмеÑÑо ( ÐºÐ°ÐºÐ°Ñ Ñо
ÑÐ»Ð¾Ð¶Ð½Ð°Ñ Ð²ÑÑиÑлиÑелÑнаÑ
ÑабоÑа ) - подÑÑавиÑÑ <?php sleep(5) ?>,
Ñо ÑÑо пÑи иÑполÑзовании
pcntl_signal_dispatch(), ÑÑо пÑи declare(ticks = 1) - ÑигналÑ
бÑдÑÑ ÑÑабаÑÑваÑÑ ÐºÐ°Ð¶Ð´ÑÑ
ÑекÑндÑ.
----
Server IP: 69.147.83.197
Probable Submitter: 31.13.19.105
----
Manual Page -- http://www.php.net/manual/en/function.pcntl-signal-dispatch.php
Edit -- https://master.php.net/note/edit/110048
Del: integrated -- https://master.php.net/note/delete/110048/integrated
Del: useless -- https://master.php.net/note/delete/110048/useless
Del: bad code -- https://master.php.net/note/delete/110048/bad+code
Del: spam -- https://master.php.net/note/delete/110048/spam
Del: non-english -- https://master.php.net/note/delete/110048/non-english
Del: in docs -- https://master.php.net/note/delete/110048/in+docs
Del: other reasons-- https://master.php.net/note/delete/110048
Reject -- https://master.php.net/note/reject/110048
Search -- https://master.php.net/manage/user-notes.php