Я имею дело с проблемой, когда ответ с url (в моем случае это файл JSON), который я использую 2-й раз, занимает некоторое время, поэтому php возвращает мнеМаксимальное время выполнения 30 секунд превышено только во второй раз
Fatal error: Maximum execution time of 30 seconds exceeded in [myfile] on line 54
Вот код:
save_road.php
<?php
include('simple_html_dom.php');
include('controller.php');
$restrictions = new road_restrictions; ?>
controller.php
include('functions-map.php');
class road_restrictions {
function __construct() {
$road_id = get_road_id();
show($road_id);
$informacion = $this->get_all_info($road_id); //goes here
foreach ($informacion as $info) {
$this->save($info);
}
//show($informacion);
}
function get_all_info($road_id) {
foreach ($road_id as $id) {
$road_info = get_info($id); //goes here
if ($road_info !== NULL) {
$info[] = $road_info;
}
}
return $info;
}
function save($info) {
save_road($info);
}
}
функции-map.php
function get_info($id) {
$json = file_get_contents('http://restrictions.eismoinfo.lt/'); //stuck here
$array = json_decode($json, true);
//other code
Это займет слишком много времени в этой точке кода. Первый раз, когда он называется function-map.php Функция get_road_id()
(где тот же код, чтобы получить json), он работает нормально, но когда дело доходит до get_info
, функция file_get_contents
просто ждет чего-то до окончания времени.
Есть ли у вас какие-либо предложения?
Вы можете увеличить максимальное время выполнения с помощью ini_set ('max_execution_time', 180); (3 мин.). Но попробуйте отследить проблему в консоли Chrome на вкладке «Сеть», чтобы узнать, есть ли у вас высокий TTFB или время загрузки. Если ожидание происходит из-за загрузки, включите сжатие gzip. –
Комментарий второго Николая, если этот другой сервер принадлежит вам, включение GZIP-сжатия в HTTP может иметь огромное значение, например, до 10: 1 улучшений. – TravisO