Несколько дней назад написал сценарий php, который просматривает всю мою музыку и читает теги id3 для каждой песни и вставляет их в базу данных mysql.Вот фрагмент кода:
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
}
Я изменил директиву php max_execution_time
в apache2 / php.ini, чтобы лучше понять, что делает эта директива.
Когда я установил max_execution_time = 10
, мой скрипт php работает около 45 секунд и успешно считывает теги id3 для 150 песен (из тысяч песен) и вставляет эти теги в базу данных mysql перед тем, как завершить скрипт и вывести на экран следующее:
Неустранимая ошибка: превышено максимальное время выполнения в 10 секунд в /websites/.../public_html/GetID3()/getid3/module.audio.mp3.php в строке 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, таких как итерация цикла?
Можно ли рассчитать время выполнения и распечатать его на экране?
РЕДАКТИРОВАТЬ Используя таймер, предложенный Дагоном,Я вызвал функцию getTime () в конце цикла, было около 100+ итераций цикла.Вот вывод в мой браузер:
0,1163 секунды
0,8142 секунды
1,1379 секунды
1,55555 секунды
...
76,7847 секунд
77.2008 секунд
77.6071 секунд
Неустранимая ошибка: максимальное время выполнения в 10 секунд превышено в /websites/.../public_html/GetID3() /getid3/module.audio.mp3.php в строке 505