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();
原理是在函數(shù)執(zhí)行前先設(shè)定一個時鐘信號,如果函數(shù)的執(zhí)行超過規(guī)定時間,信號會被觸發(fā),信號處理函數(shù)會拋出一個異常,被外層代碼捕獲。這樣就跳出了原來函數(shù)的執(zhí)行,接著執(zhí)行下面的代碼。如果函數(shù)在規(guī)定的時間內(nèi),時鐘信號不會觸發(fā),在函數(shù)結(jié)束后清除時鐘信號,不會有異常拋出。哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費用,即可穩(wěn)步提升排名至首頁。歡迎體驗最佳的哈爾濱網(wǎng)站建設(shè)。
