Home  >  Article  >  Backend Development  >  Setting timeout for PHP function execution_PHP Tutorial

Setting timeout for PHP function execution_PHP Tutorial

WBOY
WBOYOriginal
2016-07-20 11:15:42886browse

How to prevent a function from taking too long to execute? In PHP, it can be implemented using pcntl clock signal + exception.

The code is as follows:

declare(ticks = 1);
    function a(){
    sleep(10);
    echo "a finishi\n";
}
function b(){
    echo "Stop\n";
}
function c(){
    usleep(100000);
}

function sig(){
    throw new Exception;
}

try{
    pcntl_alarm(1);
    pcntl_signal(SIGALRM, "sig");
    a();
    pcntl_alarm(0);
}catch(Exception $e){
    echo "timeout\n";
}

b();
a();
b();

 

The principle is to set a clock signal before the function is executed. If the execution of the function exceeds the specified time, the signal will be triggered, and the signal processing function will throw an exception and be caught by the outer code.

This will jump out of the execution of the original function, and then execute the following code. If the function is within the specified time, the clock signal will not be triggered. The clock signal will be cleared after the function ends, and no exception will be thrown.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/440158.htmlTechArticleHow to prevent a function from taking too long to execute? In PHP, you can use pcntl clock signal + exception to achieve this. The code is as follows: declare(ticks = 1); function a(){ sleep(10); echo "a finishi...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn