前幾天寫了一個php腳本,通過我所有的音樂,並讀取每首歌曲的id3標籤,並將它們插入到mysql數據庫中。這裏有一個背景片段:如何計算執行時間(php指令'max_execution_time'?)
exec ("find /songs -type f -iname '*mp3'", $song_path);
$number_of_songs = count($song_path);
for($i=0; $i<$number_of_songs; $i++){
//read id3 tags
//store id3 tags into database
}
我的Apache2/php.ini中改變了PHP指令max_execution_time
更好地理解這個指令做什麼。
當我設置max_execution_time = 10
時,我的php腳本運行約45秒,併成功讀取約150首歌曲(超過數千首歌曲)的id3標記,並在終止腳本並輸出以下內容之前將這些標記插入到mysql數據庫中到屏幕上:
致命錯誤:在/websites/.../public_html/GetID3()/getid3/module.audio.mp3.php超過上線10秒最大執行時間1894
從文檔中,'最大執行時間不受系統調用,流操作等影響'http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time
我可以從
maximum_execution_time
之間的差異推斷出什麼被設置爲10秒和腳本 運行總共45秒前結束?這個 意味着45秒內,35花了非PHP相關的 活動,如讀取ID3標籤,插入數據到MySQL等...,而花10年做 做PHP的相關活動,如迭代循環?有沒有一種方法可以計算執行時間並將其打印到 的屏幕?
EDIT 使用定時器袞建議,我稱爲在循環結束時的getTime()函數,大約有超過100個迭代循環。下面是輸出到我的瀏覽器:
0.1163秒
0.8142秒
1.1379秒
1.5555秒
...
76.7847秒
77.2008秒
77.6071秒
致命錯誤:在/websites/.../public_html/GetID3()/getid3/module.audio.mp3超過了10秒最大執行時間。PHP的在線505
你碰巧在使用set_time_limit(http://php.net/set_time_limit)嗎? '被調用時,set_time_limit()從零開始重新啓動超時計數器。換句話說,如果超時時間是默認的30秒,並且腳本執行時間爲25秒,則會執行一次諸如set_time_limit(20)的調用,腳本將在超時之前運行總共45秒。 – Corbin 2012-01-18 03:31:08
不,我不使用set_time_limit – user784637 2012-01-18 04:05:58