Как исправить ошибки максимального времени выполнения в PHP?

У меня есть страница PHP, которую я запускаю каждую минуту через работу CRON.

Я запускаю его довольно долгое время, но внезапно он начал разворачивать эти ошибки:

Maximum execution time of 30 seconds exceeded in /home2/sharingi/public_html/scrape/functions.php on line 84 

Номер строки будет меняться с каждой ошибкой, начиная от линии 70 до 90-х.

Вот код из строк 0-95

 function crawl_page( $base_url, $target_url, $userAgent, $links) { $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); curl_setopt($ch, CURLOPT_URL,$target_url); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_TIMEOUT, 100); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); //follow up to 10 redirections - avoids loops $html = curl_exec($ch); if (!$html) { echo "<br />cURL error number:" .curl_errno($ch); echo "<br />cURL error:" . curl_error($ch); //exit; } // // load scrapped data into the DOM // $dom = new DOMDocument(); @$dom->loadHTML($html); // // get only LINKS from the DOM with XPath // $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); // // go through all the links and store to db or whatever // for ($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $url = $href->getAttribute('href'); //if the $url does not contain the web site base address: http://www.thesite.com/ then add it onto the front $clean_link = clean_url( $base_url, $url, $target_url); $clean_link = str_replace( "http://" , "" , $clean_link); $clean_link = str_replace( "//" , "/" , $clean_link); $links[] = $clean_link; //removes empty array values foreach($links as $key => $value) { if($value == "") { unset($links[$key]); } } $links = array_values($links); //removes javascript lines foreach ($links as $key => $value) { if ( strpos( $value , "javascript:") !== FALSE ) { unset($links[$key]); } } $links = array_values($links); // removes @ lines (email) foreach ($links as $key => $value) { if ( strpos( $value , "@") !== FALSE || strpos( $value, 'mailto:') !== FALSE) { unset($links[$key]); } } $links = array_values($links); } return $links; } не function crawl_page( $base_url, $target_url, $userAgent, $links) { $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); curl_setopt($ch, CURLOPT_URL,$target_url); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_TIMEOUT, 100); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); //follow up to 10 redirections - avoids loops $html = curl_exec($ch); if (!$html) { echo "<br />cURL error number:" .curl_errno($ch); echo "<br />cURL error:" . curl_error($ch); //exit; } // // load scrapped data into the DOM // $dom = new DOMDocument(); @$dom->loadHTML($html); // // get only LINKS from the DOM with XPath // $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); // // go through all the links and store to db or whatever // for ($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $url = $href->getAttribute('href'); //if the $url does not contain the web site base address: http://www.thesite.com/ then add it onto the front $clean_link = clean_url( $base_url, $url, $target_url); $clean_link = str_replace( "http://" , "" , $clean_link); $clean_link = str_replace( "//" , "/" , $clean_link); $links[] = $clean_link; //removes empty array values foreach($links as $key => $value) { if($value == "") { unset($links[$key]); } } $links = array_values($links); //removes javascript lines foreach ($links as $key => $value) { if ( strpos( $value , "javascript:") !== FALSE ) { unset($links[$key]); } } $links = array_values($links); // removes @ lines (email) foreach ($links as $key => $value) { if ( strpos( $value , "@") !== FALSE || strpos( $value, 'mailto:') !== FALSE) { unset($links[$key]); } } $links = array_values($links); } return $links; } не function crawl_page( $base_url, $target_url, $userAgent, $links) { $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); curl_setopt($ch, CURLOPT_URL,$target_url); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_TIMEOUT, 100); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); //follow up to 10 redirections - avoids loops $html = curl_exec($ch); if (!$html) { echo "<br />cURL error number:" .curl_errno($ch); echo "<br />cURL error:" . curl_error($ch); //exit; } // // load scrapped data into the DOM // $dom = new DOMDocument(); @$dom->loadHTML($html); // // get only LINKS from the DOM with XPath // $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); // // go through all the links and store to db or whatever // for ($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $url = $href->getAttribute('href'); //if the $url does not contain the web site base address: http://www.thesite.com/ then add it onto the front $clean_link = clean_url( $base_url, $url, $target_url); $clean_link = str_replace( "http://" , "" , $clean_link); $clean_link = str_replace( "//" , "/" , $clean_link); $links[] = $clean_link; //removes empty array values foreach($links as $key => $value) { if($value == "") { unset($links[$key]); } } $links = array_values($links); //removes javascript lines foreach ($links as $key => $value) { if ( strpos( $value , "javascript:") !== FALSE ) { unset($links[$key]); } } $links = array_values($links); // removes @ lines (email) foreach ($links as $key => $value) { if ( strpos( $value , "@") !== FALSE || strpos( $value, 'mailto:') !== FALSE) { unset($links[$key]); } } $links = array_values($links); } return $links; } не function crawl_page( $base_url, $target_url, $userAgent, $links) { $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); curl_setopt($ch, CURLOPT_URL,$target_url); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_TIMEOUT, 100); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); //follow up to 10 redirections - avoids loops $html = curl_exec($ch); if (!$html) { echo "<br />cURL error number:" .curl_errno($ch); echo "<br />cURL error:" . curl_error($ch); //exit; } // // load scrapped data into the DOM // $dom = new DOMDocument(); @$dom->loadHTML($html); // // get only LINKS from the DOM with XPath // $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); // // go through all the links and store to db or whatever // for ($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $url = $href->getAttribute('href'); //if the $url does not contain the web site base address: http://www.thesite.com/ then add it onto the front $clean_link = clean_url( $base_url, $url, $target_url); $clean_link = str_replace( "http://" , "" , $clean_link); $clean_link = str_replace( "//" , "/" , $clean_link); $links[] = $clean_link; //removes empty array values foreach($links as $key => $value) { if($value == "") { unset($links[$key]); } } $links = array_values($links); //removes javascript lines foreach ($links as $key => $value) { if ( strpos( $value , "javascript:") !== FALSE ) { unset($links[$key]); } } $links = array_values($links); // removes @ lines (email) foreach ($links as $key => $value) { if ( strpos( $value , "@") !== FALSE || strpos( $value, 'mailto:') !== FALSE) { unset($links[$key]); } } $links = array_values($links); } return $links; } 

Что вызывает эти ошибки, и как я могу их предотвратить?

Related of "Как исправить ошибки максимального времени выполнения в PHP?"

Вы должны установить максимальное время выполнения, используя функцию set_time_limit . Если вы хотите бесконечное время (скорее всего, ваше дело), ​​используйте:

 set_time_limit(0); 

Причина . Для выполнения некоторых функций требуется более 30 секунд.
Решение. Увеличьте максимальное время выполнения ( max_execution_time ) в файле конфигурации php.
1. Если у вас есть доступ к вашему глобальному файлу php.ini (обычно в / web / conf else вы можете получить местоположение из файла конфигурации (php.ini) в phpinfo), измените max_execution_time = 30 на max_execution_time = 300.
2. Если у вас есть доступ только к локальному файлу php.ini (вы можете получить местоположение из Загруженного файла конфигурации в phpinfo), измените max_execution_time = 30 на max_execution_time = 300. Примечание. Этот файл называется php5.ini для php 5.x + и php.ini для 4.x.