У меня есть эта большая функция (более 1300 строк кода), которая берет данные из Интернета и вставляет их в локальную базу данных. Каждый раз, когда функция запускается, требуется около 20 секунд, и мне нужно запускать эту функцию миллион раз, поэтому я использую set_time_limit (0), чтобы установить ограничение времени PHP на бесконечность, и я зацикливаю функцию миллион раз, как это:
for ($ID= '01'; $ID < '999999'; $ID++) {
getDataFromWeb($conn, $ID);
}
Так в чем проблема? Проблема в том, что есть миллион вещей, которые могут пойти не так, и всегда идут не так, и вдруг код застревает в ID 23465, например, и он просто прекращает получать данные, но я не получаю никакой ошибки, это как цикл продолжается, но без вставки чего-либо в базу данных, и из-за «без ограничения времени» я установил PHP, тогда он никогда не останавливается.
Я хочу знать, как я могу обнаружить такую проблему, остановить все и показать предупреждение. Если я установил время до запуска функции, а затем проверил его, когда функция заканчивается, как показано ниже:
for ($ID= '01'; $ID < '999999'; $ID++) {
$time_start = microtime();
getDataFromWeb($conn, $ID);
$time_end = microtime();
if ($time_alert - //... somehow check how time does it takes and stop if its taking too much
}
Это не будет работать, потому что если функция никогда не завершится, $ time_end никогда не будет установлен и так далее ...
Итак, помогите, пожалуйста?