php set_time_limit()用法測試詳解

      網(wǎng)友投稿 951 2025-04-01

      一個php腳本通過crontab每5分鐘執(zhí)行一次,考慮到腳本執(zhí)行時間會超過5分鐘,特意用set_time_limit(290)來控制腳本在290秒退出。某天突然發(fā)現(xiàn)后臺有多個該腳本的進程在執(zhí)行,也就是說set_time_limit(290)沒有起作用。為了證明,特意使用如下代碼測試。


      無論是在web還是CLI下,上述腳本并沒有在5秒鐘后退出。后來加上ini_set(‘max_execution_time’, 5)測試,結(jié)果一樣。那是不是說明set_time_limit函數(shù)根本就沒有用呢?其實不然,在 http://stackoverflow.com/questions/5874950/set-max-execution-time-in-php-cli 這里找到根源所在,其實是上面的寫法有問題,例如使用下述代碼:

      執(zhí)行后,大概5秒鐘就可以看到”Fatal error: Maximum execution time of 5 seconds exceeded in”類似這樣的錯誤提示。說明set_time_limit是起作用的。現(xiàn)在在去看看官方文檔(http://www.php.net/manual/en/function.set-time-limit.php)上關(guān)于此函數(shù)的說明,在Note中寫到:

      The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not?included when determining the maximum time that the script has been running. This is not true on Windows where the measured time is real.

      注意:sleep函數(shù)暫停的時間也是不計入腳本的執(zhí)行時間的。所以也是第一個測試失敗的原因。

      當(dāng)你的頁面有大量數(shù)據(jù)時,建議使用set_time_limit()來控制運行時間,默認是30s,所以需要你將執(zhí)行時間加長點,如 set_time_limit(300)? ,其中將秒數(shù)設(shè)為0 ,表示持續(xù)運行!

      php set_time_limit()用法測試詳解

      如:set_time_limit(0)表示長時間鏈接運行!

      注意:這個函數(shù)的運行需要你關(guān)閉安全模式,在php.ini中將safe_mode = Off 安全模式設(shè)置為Off,否則將會出現(xiàn)下面錯誤:

      Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in

      再次注意的是:

      在php.ini可以通過定義max_execution_time來設(shè)置PHP頁面的最大執(zhí)行時間,比如下面:

      這個函數(shù)指定了當(dāng)前所在php腳本的最大執(zhí)行時間,

      雖然設(shè)定值是900秒,實際上

      最大執(zhí)行時間=php.ini里的max_execution_time數(shù)值 - 當(dāng)前腳本已經(jīng)執(zhí)行的時間 + 設(shè)定值

      假如php.ini里的max_execution_time=30,當(dāng)前腳本已經(jīng)執(zhí)行10秒,則:

      最大執(zhí)行時間=30-10+900=920秒。

      php中設(shè)置set_time_limit不起作用的解決方法:

      set_time_limit用來設(shè)置腳本的超時時間,用法如下:

      set_time_limit(秒數(shù));

      規(guī)定從該句運行時起程序必須在指定秒數(shù)內(nèi)運行結(jié)束,

      超時則程序出錯退出.

      但是有時候設(shè)置set_time_limit沒有效果,set_time_limit函數(shù)最好是在linux下執(zhí)行,windows執(zhí)行可能也無效

      解決方法:

      修改php.ini里的max_execution_time = 30了。這個默認是30秒,修改為max_execution_time = 300.重新啟動apache服務(wù)器。這樣超時設(shè)置為300秒就有提示信息了.

      PHP

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:制造業(yè)生產(chǎn)管理出路(制造業(yè)的出路)
      下一篇:《工業(yè)APP:開啟數(shù)字工業(yè)時代 》 —2.4 工業(yè)APP的典型特征
      相關(guān)文章
      亚洲AV日韩精品久久久久久久| 伊人久久亚洲综合影院| 亚洲中久无码不卡永久在线观看| 亚洲国产成人综合精品| 亚洲欧洲日产韩国在线| 亚洲性无码av在线| 亚洲中文无码线在线观看| 91亚洲国产成人久久精品网址| 在线观看亚洲一区二区| 亚洲综合综合在线| 亚洲a级在线观看| 中文字幕精品三区无码亚洲| 亚洲一本一道一区二区三区| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲精品无码国产片| 亚洲国产一区二区三区在线观看 | 大桥未久亚洲无av码在线| 亚洲AV无码专区在线电影成人| 亚洲AV成人精品日韩一区| 国产精品自拍亚洲| 国产乱辈通伦影片在线播放亚洲| 亚洲午夜福利717| 久久精品夜色国产亚洲av| 亚洲自偷自拍另类12p| 亚洲手机中文字幕| 日本亚洲色大成网站www久久| 亚洲AV无码一区二区大桥未久| 看亚洲a级一级毛片| 亚洲精品国产精品国自产观看| 亚洲精品无码永久在线观看| 亚洲尤码不卡AV麻豆| 亚洲av无码一区二区三区乱子伦| 亚洲激情在线视频| 亚洲中文无码线在线观看| 亚洲av无码成人精品国产| 亚洲另类少妇17p| 国产亚洲美女精品久久久久狼| 亚洲伦理一区二区| 亚洲AV成人影视在线观看| 国产精品手机在线亚洲| 亚洲日韩精品一区二区三区无码 |