数日前、私のすべての音楽を通って各歌のid3タグを読み込んで、それらをmysqlデータベースに挿入するphpスクリプトを書いた。ここではコンテキストの抜粋です:実行時間の計算方法(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はid3タグの読み込み、mysqlなどへのデータの挿入など、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秒の最大実行時間。ライン505
set_time_limit(http://php.net/set_time_limit)を使用していますか? 'を呼び出すと、set_time_limit()はタイムアウトカウンタをゼロから再起動します。つまり、タイムアウトがデフォルトの30秒で、スクリプトの実行に25秒(set_time_limit(20)などの呼び出しが行われた場合)、スクリプトはタイムアウトするまで合計45秒間実行されます。 – Corbin
いいえ私はset_time_limitを使用していません – user784637