file_get_html не удалось открыть поток: в соединении отказано

Я получил эту функцию, чтобы получить некоторую информацию от внешнего URL.
Проблема в том, что если на сайте нет роботов без индекса, происходит сбой этой функции, что впоследствии приводит к сбою цикла foreach.

Сообщение об ошибке:

Предупреждение: file_get_contents (http://webontwerp-arnhem.nl/contact): не удалось открыть поток: соединение отклонено в /var/www/vhosts/free-sitemap-generator.com/httpdocs/includes/cra/simple_html_dom.php в строке 79

Неустранимая ошибка: необученная ошибка: вызов функции-члена find () для логического значения в /var/www/vhosts/free-sitemap-generator.com/httpdocs/includes/cra/xml-functions.php:60 трассировки стека: # 0 /var/www/vhosts/free-sitemap-generator.com/httpdocs/crawler.php(44): crawl_site (‘Http: // webontwe…’) # 1 {main} добавлено в /var/www/vhosts/free-sitemap-generator.com/httpdocs/includes/cra/xml-functions.php в строке 60

Функция:

function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
{
$dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText);
$contents = file_get_contents($url, $use_include_path, $context, $offset);

if (empty($contents) || strlen($contents) > MAX_FILE_SIZE)
{
return false;
}

$dom->load($contents, $lowercase, $stripRN);
return $dom;
}

Вызов функции с циклом:

function crawl_site($u) {
$urlList = array();
global $crawled_urls, $found_urls;
$uen = urlencode($u);
if ((array_key_exists($uen, $crawled_urls) == 0 || $crawled_urls[$uen] < date("YmdHis", strtotime('-25 seconds', time())))) {
$html = file_get_html($u);

$crawled_urls[$uen] = date("YmdHis");
foreach($html -> find("a")as $li) {
$url = perfect_url($li -> href, $u);
$enurl = urlencode($url);
$str = basename($url);
$dirn = dirname($url);
if ($url != '' && substr($url, 0, 4) != "mail" && substr($url, 0, 3) != "tel" && substr($url, 0, 5) != "phone" && substr($url, 0, 5) != "skype" && substr($url, 0, 4) != "java" && array_key_exists($enurl, $found_urls) == 0) {
$found_urls[$enurl] = 1;
$pos = strpos($str[0], '#');
$ext = strpos($url, $u);
if ($ext != = false && $pos == = false) {
echo "<li><div class='url-row'>$dirn/<span class='strong'>$str</span></div></li>";

array_push($urlList, $url);
}
}
}
}
}

0

Решение

Вы можете использовать CURL вместо file_get_contents ()

<?php
$url = 'http://webontwerp-arnhem.nl/contact';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec ($ch);
curl_close ($ch);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector