Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
timeouts in php
<?php
class TimeoutException extends RuntimeException {}
class Timeout
{
private $active;
public function set($seconds)
{
$this->active = true;
declare(ticks = 1);
pcntl_signal(SIGALRM, array($this, 'handle'), true);
pcntl_alarm($seconds);
}
public function clear()
{
$this->active = false;
}
public function handle($signal)
{
echo "received signal\n";
if ($this->active) {
throw new TimeoutException();
}
}
}
$timeout = new Timeout();
$start = microtime(true);
try {
echo "setting timeout to 1 second\n";
$timeout->set(1); // set a 1 second timeout
echo "sleeping for 10 seconds\n";
sleep(10); // some long running operation...
echo "clearing 1 second timeout\n";
$timeout->clear(); // clear timeout
} catch(TimeoutException $e) {
// timed out
echo "caught a TimeoutException\n";
}
$total = microtime(true) - $start;
echo "time spent {$total}\n";

ornicar commented Jul 10, 2012

yummy :)

I tip my hat to you, sir!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment