溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php運(yùn)行超時(shí)的解決方法有哪些

發(fā)布時(shí)間:2020-06-23 11:16:00 來(lái)源:億速云 閱讀:214 作者:Leah 欄目:編程語(yǔ)言

php運(yùn)行超時(shí)的解決方法有哪些?針對(duì)這個(gè)問(wèn)題,今天小編總結(jié)了這篇文章,希望能幫助更多想解決這個(gè)問(wèn)題的朋友找到更加簡(jiǎn)單易行的辦法。

在php中默認(rèn)腳本執(zhí)行超時(shí)時(shí)間為30秒了,如果你未進(jìn)行設(shè)置30秒之后如果你的腳本還未執(zhí)行完就會(huì)超時(shí)了,下面我來(lái)給大詳解解決PHP腳本執(zhí)行超時(shí)的方法。

php.ini 中缺省的最長(zhǎng)執(zhí)行時(shí)間是 30 秒,雖然可以通過(guò)調(diào)整 php.ini 中 max_execution_time的值來(lái)達(dá)到目的,但有些情況是沒(méi)有條件修改php.ini的,如何解決這個(gè)問(wèn)題呢。

一種方法是在 PHP 腳本中加入

ini_set('max_execution_time', '0');

將運(yùn)行時(shí)間設(shè)置成0(無(wú)限值);

另一種方法是在命令行下執(zhí)行腳本,使用命令行執(zhí)行腳本時(shí),最大運(yùn)行時(shí)間被設(shè)置為了無(wú)限值。

修改php.ini的腳本執(zhí)行時(shí)間限制

編輯php.ini,修改max_execution_time值:

max_execution_time=500
//此修改需要重新加載php.ini,需要重啟web服務(wù)器生效。

  通過(guò).htaccess 文件設(shè)置腳本執(zhí)行時(shí)間

php_value max_execution_time 500

  在腳本中設(shè)置執(zhí)行的最大時(shí)間

ini_set('max_execution_time', 500);

  用php的函數(shù)取消腳本的時(shí)間限制

set_time_limit(0);

set_time_limit用來(lái)設(shè)置腳本的超時(shí)時(shí)間,此函數(shù)規(guī)定從該句運(yùn)行時(shí)起程序必須在指定秒數(shù)內(nèi)運(yùn)行結(jié)束,超時(shí)則程序出錯(cuò)退出。

下面是一個(gè)例子. 有10000條數(shù)據(jù), 要修改其中某些數(shù)據(jù),  運(yùn)用PHP分步執(zhí)行處理, 代碼如下:

action.php

<?php
 $stid = isset($_GET['stid'])?$_GET['stid']:0;
 $endid = $stid + 100;
 $maxid = 10000;

 function dosomething(){
  //要時(shí)間比較多的操作
  ……
 }
 $sql_string=”select *  from `table`  where id>’$stid’ and id<=’$endid’ order by id”;
 $datas = getdata_bysql($sql_string);
 foreach($datas as $data){
  //處理數(shù)據(jù)
  …..
  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()是一個(gè)耗時(shí)操作.  這里我們通過(guò)限制id范圍來(lái)減少運(yùn)行時(shí)間,   運(yùn)行完后通過(guò)javascript的跳轉(zhuǎn)來(lái)自動(dòng)運(yùn)行下一步

現(xiàn)在dedecms生成html頁(yè)面時(shí)就是這樣做的哦。

關(guān)于php運(yùn)行超時(shí)的解決方法有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI