idea shell 中的函数 跳转_PHP如何为函数执行设置超时?
(給PHP開發(fā)者加星標(biāo),提升PHP技能)
轉(zhuǎn)自:韓天峰
http://rango.swoole.com/archives/64
如何防止一個(gè)函數(shù)執(zhí)行時(shí)間過長呢?在PHP里可以用pcntl時(shí)鐘信號(hào)+異常來實(shí)現(xiàn)。
代碼如下:
<?php 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è)定一個(gè)時(shí)鐘信號(hào),如果函數(shù)的執(zhí)行超過規(guī)定時(shí)間,信號(hào)會(huì)被觸發(fā),信號(hào)處理函數(shù)會(huì)拋出一個(gè)異常,被外層代碼捕獲。這樣就跳出了原來函數(shù)的執(zhí)行,接著執(zhí)行下面的代碼。如果函數(shù)在規(guī)定的時(shí)間內(nèi),時(shí)鐘信號(hào)不會(huì)觸發(fā),在函數(shù)結(jié)束后清除時(shí)鐘信號(hào),不會(huì)有異常拋出。
- EOF -
推薦閱讀??點(diǎn)擊標(biāo)題可跳轉(zhuǎn)1、用 PHP 實(shí)現(xiàn)多線程編程
2、也許這樣理解 HTTPS 更容易
3、PHP 8 性能怎么樣?
看完本文有收獲?請(qǐng)分享給更多人
關(guān)注「PHP開發(fā)者」加星標(biāo),提升PHP技能
點(diǎn)贊和在看就是最大的支持??
總結(jié)
以上是生活随笔為你收集整理的idea shell 中的函数 跳转_PHP如何为函数执行设置超时?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: golang适合做什么_什么八字适合做销
- 下一篇: mvc和php的关系,php - 什么