在php中預設指令碼執行逾時時間為30秒了,如果你未進行設定30秒之後如果你的指令碼還未執行完就會逾時了,下面我來給大詳解解決PHP指令碼執行逾時的方法。
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
| 代碼如下 |
複製代碼 |
$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.” 處理完成. ”; if($id>=$maxid){exit;} } if($stid<=$maxid){ $stid = $stid + 100; $url=”action.php?stid=$stid”; echo $url; echo ‘’; } ?> |
其中的dosomething()是一個耗時操作. 這裡我們通過限制id範圍來減少已耗用時間, 運行完後通過javascript的跳轉來自動運行下一步
現在dedecms產生html頁面時就是這樣做的哦。
http://www.bkjia.com/PHPjc/632105.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632105.htmlTechArticle在php中預設指令碼執行逾時時間為30秒了,如果你未進行設定30秒之後如果你的指令碼還未執行完就會逾時了,下面我來給大詳解解決PHP指令碼執行...