<?php
declare(ticks = 1);
function signal_handler($signal) {
print "Caught SIGALRM\n";
pcntl_alarm(5);
}
pcntl_signal(SIGALRM, "signal_handler", true);
pcntl_alarm(5);
for(;;) {
}
?>
pcntl_alarm
(PHP 4 >= 4.3.0, PHP 5)
pcntl_alarm — Setzt einen Zeitschalter für die Auslieferung eines Signals
Beschreibung
int pcntl_alarm
( int
$seconds
)
Die Funktion pcntl_alarm() erzeugt eine Zeitschaltuhr,
die ein SIGALRM Signal an den Prozess senden wird,
nachdem seconds Sekunden vergangen sind.
Wenn seconds Null ist wird kein neuer Timer
erzeugt. Jeder Aufruf von pcntl_alarm() wird jeden
zuvor erzeugten Zeitschalter abbrechen.
pcntl_alarm() wird die Zeitangabe in Sekunden zurückgeben, die ein zuvor angesetzter Zeitschalter übrig hatte, bevor er ausgeliefert werden sollte, oder 0, wenn es keinen vorher angesetzten Zeitschalter gab.
j at ukr-info dot net ¶
7 years ago
thessoro at gmail dot com ¶
2 years ago
If your process uses SIGALRM and sleep() at the same time, the alarm set could make sleep() to return prematurely.
To avoid this and ensure your process waits a number of seconds you could use a function or class similar to this one:
<?php
class SleepWorkaroundForSIGALRM {
private $time;
function __construct($seconds) {
$this->time = time() + $seconds;
while ($this->time >= time()) {
sleep(1);
}
}
?>
