❶ php執行cmd腳本超時,不能去改ini因為超時期間頁面一直在等待,怎麼才能
PHP腳本執行超時的解決辦法
在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
代碼如下
<?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頁面時就是這樣做
❷ PHP函數執行時間過長無響應,有什麼優化的辦法
可以採用MQ,首先將task丟進Q裡面,然後給出用戶提示,前台頁面輪詢後台結果。
如果數據量過大建議分批處理,拆分成多個task即可。
❸ php如何設置時間限制
PHP如何設置頁面最大執行時間
方法:
1、在php.ini文件中 max_execution_time 代表了最大執行時間,其默認值為30。
2、set_time_limit(int seconds);這個函數可以設定,不過據說要在linux下才有用,而且在php.ini中的safe_mode = off
3、ini_set('max_execution_time',最大時間);
❹ php中點擊一個按鈕,執行一個內置函數
<!--?
ignore_user_abort();
//即使Client斷開(如關掉瀏覽器),PHP腳本也可以繼續執行.
set_time_limit(0);
//
執行時間為無限制,php默認的執行時間是30秒,通過set_time_limit(0)可以讓程序無限制的執行下去
$interval=60*5;
//
每隔5分鍾運行
do{
$fp
= fopen("test.txt","a");
fwrite($fp,"rn".date('Y-m-d
H:i:s',time())."rn");
fclose($fp);
sleep($interval);
//
按設置的時間等待5分鍾循環執行
}while(true);
echo
'ok';
?-->
❺ php程序怎麼長時間執行
PHP不能長時間執行的原因:
由於PHP主要用於網頁開發,為了避免長時間執行的網頁佔用太多的網路資源,PHP提供了限制PHP程序執行時間的方法,在php.ini 中的 max_execution_time 變數指定程序最大執行時間,默認是30秒,PHP程序執行超過這個時間後將被系統強制結束。
使PHP長時間執行的辦法:
如果你的PHP系統不是為了網站開發而安裝的,可以在PHP.INI文件裡面修改這個參數的值。如果只是個別程序希望執行較長的時間,不想修改整個系統的配置,或者沒有許可權修改系統配置,可以在PHP程序裡面適用本程序的參數值,語句示例:
//設置時間限制為2分鍾
set_time_limit(120);
//設置時間限制為0,允許無限期執行
set_time_limit(0);
❻ 求php的 時間對比函數!~ 跟判斷
用mktime函數,把時間轉換為整數類型,即可方便的進行比較,下面是mktime函數的說明:
函數格式:
int mktime ( [int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst]]]]]]] )
根據給出的參數返回 Unix 時間戳。時間戳是一個長整數,包含了從 Unix 紀元(January 1 1970 00:00:00 GMT)到給定時間的秒數。
參數可以從右向左省略,任何省略的參數會被設置成本地日期和時間的當前值。
那麼客戶提交時間,就應該是程序執行的當前時間,也就是下面語句獲取:
$cur_tiems = mktime();
現在解決你的上一個時間,如果是以前某次程序執行時保存的時刻,那麼可以在那時候把mktime()的結果保存,如果是你指定的2004-02-23 10:56:23,那麼用下面語句可以獲取他的時間整數:
$last_times = mktime(10,56,23,2,23,2004);
最後就是判斷兩個時間是否相差一個小時,這太簡單了,就是看是否相差3600秒,語句如下:
if ($cur_times - $last_times > 3600) {echo '超過一個小時了,可以投票'; 投票語句;}
else echo '你一個小時之內投過票的,現在不允許這么積極,喝水去吧';