Req #39168 [Opn->Fbk]: Semaphore acquire timeout
Edit report at https://bugs.php.net/bug.php?id=39168&edit=1
ID: 39168
Updated by: cmb@php.net
Reported by: s dot s at terra dot com dot br
Summary: Semaphore acquire timeout
-Status: Open
+Status: Feedback
Type: Feature/Change Request
Package: Semaphore related
Operating System: Freebsd 6
PHP Version: 5.1.6
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
As of PHP 5.6.1 the $nowait parameter is available, which appears
to provide an even more flexible solution to the timeout problem.
Do you agree?
Previous Comments:
------------------------------------------------------------------------
[2012-12-09 05:16:04] jhill9693 at gmail dot com
You can do this with pcntl_alarm() and pcntl_signal() to send yourself the SIGALRM POSIX signal
after a
number of seconds.
<?php
declare(ticks = 1);
function handle_timeout() {
throw new Exception('Semaphore acquire timeout');
}
pcntl_signal(SIGALRM, 'handle_timeout');
$key = ftok(__FILE__, 'R');
$sem = sem_get($key);
pcntl_alarm(10);
sem_acquire($sem);
pcntl_alarm(0);
echo 'Semaphore acquired :)';
sem_release($sem);
------------------------------------------------------------------------
[2006-10-16 16:55:21] s dot s at terra dot com dot br
Description:
------------
Should be great if there was an optional parameter (default = 0) in function sem_acquire to pass a
timeout (in seconds).
Maybe send a warning no semaphore timeout ;)
Reproduce code:
---------------
Something like
<?php
$key = ftok(__FILE__, 'R');
$sem = sem_get($key);
if(sem_acquire($sem, 10)) {
echo 'Semaphore acquire failed. Timeout?';
}
else {
echo 'Semaphore acquired :)';
sem_release($sem);
}
?>
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=39168&edit=1
Thread (6 messages)