解決php執行超時的方法

2020-07-16 10:05:47

  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其它相關文章!