У меня есть сценарий, который извлекается из внешней базы данных и хранит данные в локальной базе данных. Я настроен на среду с общим сервером, поэтому я не могу позволить сценарию работать более двух минут, но для завершения потребуется около 5-10 минут.
Могу ли я заставить скрипт останавливать цикл foreach через полтора минуты, поэтому я могу перенаправить на тот же скрипт, но с другим смещением базы данных, чтобы забрать, где он остался?
Я могу сделать последнюю часть этого, используя строку запроса GET, но я не уверен, как это сделать.
Самый простой способ – установить время () в начале вашего скрипта и проверить разницу в вашем цикле foreach.
$start = time(); // Returns time in seconds foreach($bigdata as $row) { if(time()-$start > 100) { // Stop 20 seconds before 120 sec limit // Some code for exiting the loop... break; } }
$total_time = 0; $start_time = microtime(true); while($total_time < 60)//run while less than a minute { //DoSomething; echo $total_time."\n"; sleep(5);//wait amount in seconds $total_time = microtime(true) - $start_time ; }