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

1.鏈接處理: web

在 PHP 內部,系統維護着鏈接狀態,其狀態有三種可能的狀況: 瀏覽器

0 – NORMAL(正常)
1 – ABORTED(異常退出)
2 – TIMEOUT(超時) 安全

當 PHP 腳本正常地運行 NORMAL 狀態時,鏈接爲有效。當遠程客戶端中斷鏈接時,ABORTED 狀態的標記將會被打開。遠程客戶端鏈接的中斷一般是由用戶點擊 STOP 按鈕致使的。當鏈接時間超過 PHP 的時限時,TIMEOUT 狀態的標記將被打開。 函數

能夠決定腳本是否須要在客戶端中斷鏈接時退出。有時候讓腳本完整地運行會帶來不少方便,即便沒有遠程瀏覽器接受腳本的輸出。默認的狀況是當遠程客戶端鏈接中斷時腳本將會退出。該處理過程可由 php.ini 的 ignore_user_abort 或由 Apache .conf 設置中對應的」php_value ignore_user_abort」以及 ignore_user_abort() 函數來控制。若是沒有告訴 PHP 忽略用戶的中斷,腳本將會被中斷,除非經過 register_shutdown_function() 設置了關閉觸發函數。經過該關閉觸發函數,當遠程用戶點擊 STOP 按鈕後,腳本再次嘗試輸出數據時,PHP 將會檢測到鏈接已被中斷,並調用關閉觸發函數。 .net

腳本也有可能被內置的腳本計時器中斷。默認的超時限制爲 30 秒。這個值能夠經過設置 php.ini 的 max_execution_time 或 Apache .conf 設置中對應的」php_value max_execution_time」參數或者 set_time_limit() 函數來更改。當計數器超時的時候,腳本將會相似於以上鍊接中斷的狀況退出,先前被註冊過的關閉觸發函數也將在這時被執行。在該關閉觸發函數中,能夠經過調用 connection_status() 函數來檢查超時是否致使關閉觸發函數被調用。若是超時致使了關閉觸發函數的調用,該函數將返回 2。 code

須要注意的一點是 ABORTED 和 TIMEOUT 狀態能夠同時有效。這在告訴 PHP 忽略用戶的退出操做時是可能的。PHP 將仍然注意用戶已經中斷了鏈接但腳本仍然在運行的狀況。若是到了運行的時間限制,腳本將被退出,設置過的關閉觸發函數也將被執行。在這時會發現函數 connection_status() 返回 3。 blog

2.相關函數: ip

int ignore_user_abort ( [bool setting] )
This function sets whether a client disconnect should cause a script to be aborted. It will return the previous setting and can be called without an argument to not change the current setting and only return the current setting. get

int connection_aborted ( void )
Returns TRUE if client disconnected.

int connection_status ( void )
Returns the connection status bitfield.

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/webdesman/archive/2009/09/02/4510372.aspx

=================

因爲近日作的程序中涉及到的循環比較多且處理的狀況較複雜,因此在運行程序時出現執行超時提示以下:
Fatal error: Maximum execution time of 30 seconds exceeded in D:phpAppServwwwsum3test.php on line 3

經過在網上搜索,找到如下解決方案給你們分享一下:

這個錯誤是說你的php
執行時間越過了配置文件中設置的最大執行時間30秒鐘,這不是你的程序自己存在的問題,而

是系統的配置文件問題,若是你的網速快的話,可能再執行一次就不會出現這種錯誤了,不過

有了出現這種問題也能夠進行必定的修改,方法有三種:
1.修改php的配置文件,找到php.ini文件,它通常應該放在你的C:WINDOWS目錄下,而後找到
max_execution_time = 30 ;//設置成你想要的值,單位是秒
這一行,這就是設置的執行時間最大值爲30秒,你能夠對這個值進行一下修正,改成你的指望值。(也能夠直接設置成:max_execution_time = 0)
2.使用ini_set()函數,不是全部人都能修改php.ini文件的,那麼你可使用這個函數來改變你的最大執行時間限制值,如:
ini_set(‘max_execution_time’, ’100′);
則設置爲100秒,你也能夠設置爲0,那麼就是不限制執行的時間。
3.使用set_time_limit()函數,set_time_limit(20)則表示最大執行時間加上20秒,但若是在php執行安全模式時,set_time_limit()將不會有結果,除非你用了第一種方法。

如下是部分講解:
set_time_limit — 限制最大的執行時間
set_time_limit
(PH3 , PHP4)

set_time_limit — 限制最大的執行時間

語法 : void set_time_limit (int seconds)

說明 :

設定一個程式所容許執行的秒數,若是到達限制的時間,程式將會傳回錯誤。它預設的限制時間是30秒,max_execution_time的值定義在結構檔案中(在PHP3中叫作php3.ini,在PHP4則叫作php.ini),若是將秒數設爲0,表示無時間上的限制。

當呼叫此函式時,set_time_limit( )會從零從新開始計算最長執行的時間,也就是說,若是最長執行時間爲預設的30秒,而在呼叫此函式set_time_limit(20)以前已花了25秒來執行程式,則程式最長執行的時間將會是45秒。

注意 : 當PHP是執行在安全模式時,set_time_limit( )將不會有結果,
除非是關閉安全模式或是修改結構檔案中(在PHP3中叫作php3.ini,在PHP4則叫作php.ini)的時間限制。

APMSer報 Cannot set time limit in safe mode 錯誤。

=================

找到vhost.conf文件 D:APMServ5.2.6ApacheconfapmservVhost.conf

修改

php_admin_value safe_mode on

php_admin_value safe_mode off

相關文章
相關標籤/搜索