2017-01-26 3 views
0

Я имею дело с проблемой, когда ответ с 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 просто ждет чего-то до окончания времени.

Есть ли у вас какие-либо предложения?

+1

Вы можете увеличить максимальное время выполнения с помощью ini_set ('max_execution_time', 180); (3 мин.). Но попробуйте отследить проблему в консоли Chrome на вкладке «Сеть», чтобы узнать, есть ли у вас высокий TTFB или время загрузки. Если ожидание происходит из-за загрузки, включите сжатие gzip. –

+0

Комментарий второго Николая, если этот другой сервер принадлежит вам, включение GZIP-сжатия в HTTP может иметь огромное значение, например, до 10: 1 улучшений. – TravisO

ответ

1

Попробуйте увеличить max_execution_time от php.ini.

ИЛИ

добавить эту строку перед выполнением вашего get_info(); функция set_time_limit (60);

Смежные вопросы