You've already forked qlg.tsgz.moe
Init Repo
This commit is contained in:
43
vendor/swoole/examples/process/func_timeout.php
vendored
Executable file
43
vendor/swoole/examples/process/func_timeout.php
vendored
Executable file
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
declare(ticks = 1);
|
||||
Swoole\Async::set([
|
||||
'enable_signalfd' => false,
|
||||
]);
|
||||
|
||||
class FunctionTimeoutException extends RuntimeException
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
function test()
|
||||
{
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
$serv = new Swoole\Http\Server("127.0.0.1", 9502);
|
||||
|
||||
$serv->set(['worker_num' => 1]);
|
||||
|
||||
$serv->on('WorkerStart', function($serv, $workerId) {
|
||||
pcntl_signal(SIGALRM, function () {
|
||||
Swoole\Process::alarm(-1);
|
||||
throw new FunctionTimeoutException;
|
||||
});
|
||||
});
|
||||
|
||||
$serv->on('Request', function($request, $response) {
|
||||
try
|
||||
{
|
||||
Swoole\Process::alarm(100 * 1000);
|
||||
test();
|
||||
Swoole\Process::alarm(-1);
|
||||
$response->end("<h1>Finish</h1>");
|
||||
}
|
||||
catch(FunctionTimeoutException $e)
|
||||
{
|
||||
$response->end("<h1>Timeout</h1>");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$serv->start();
|
Reference in New Issue
Block a user