php.ini 中預設的最長執行時間是 30 秒,雖然可以通過調整 php.ini 中 max_execution_time的值來達到目的,但有些情況是沒有條件修改php.ini的,如何解決這個問題呢。
一種方法是在 PHP 指令碼中加入
ini_set('max_execution_time', '0');
將執行時間設定成0(無限值);
另一種方法是在命令列下執行指令碼,使用命令列執行指令碼時,最大執行時間被設定為了無限值。
修改php.ini的指令碼執行時間限制
編輯php.ini,修改max_execution_time值:
max_execution_time=500 //此修改需要重新載入php.ini,需要重新啟動web伺服器生效。
通過.htaccess 檔案設定指令碼執行時間
php_value max_execution_time 500
在指令碼中設定執行的最大時間
ini_set('max_execution_time', 500);
用php的函數取消指令碼的時間限制
set_time_limit(0);
set_time_limit用來設定指令碼的超時時間,此函數規定從該句執行時起程式必須在指定秒數內執行結束,超時則程式出錯退出。
下面是一個例子. 有10000條資料, 要修改其中某些資料, 運用PHP分步執行處理, 程式碼如下:
action.php
<?php $stid = isset($_GET['stid'])?$_GET['stid']:0; $endid = $stid + 100; $maxid = 10000; function dosomething(){ //要時間比較多的操作 …… } $sql_string=」select * from `table` where id>’$stid’ and id<=’$endid’ order by id」; $datas = getdata_bysql($sql_string); foreach($datas as $data){ //處理資料 ….. echo $id.」 處理完成. <br />」; if($id>=$maxid){exit;} } if($stid<=$maxid){ $stid = $stid + 100; $url=」action.php?stid=$stid」; echo $url; echo ‘<script language=」javascript」>location=」‘.$url.’」; </script>’; } ?>
其中的dosomething()是一個耗時操作. 這裡我們通過限制id範圍來減少執行時間, 執行完後通過javascript的跳轉來自動執行下一步
現在dedecms生成html頁面時就是這樣做的哦。
相關文章推薦:
1.讓php超時的辦法是什麼
2.php請求介面超時如何解決
相關視訊推薦:
1.獨孤九賤(4)_PHP視訊教學
以上就是解決php執行超時的方法的詳細內容,更多請關注TW511.COM其它相關文章!