• Лови промокод з яким знижка 50 грн - promo50grn

Ошибка PHP: Warning: file_get_contents(url)

Статус: Offline
Реєстрація: 21.11.2010
Повідом.: 38
Ошибка PHP: Warning: file_get_contents(url)

Проблема вот в чем:
Пробую сделать простой мониторщик некоего сайта. Есть 2 цикла по три итерации. Первый проходит нормально, все отлично читает и выводит. Второй цикл тормозит на первой же итерации, мол немогу открыть этот юрл.
В чем проблема?? функция ведь одна и таже - file_get_contents(url)!
ЗЫ. Такое впечатление, что серв думает что я зашел на две разные страницы одновременно и не пускает. Может такое быть?
вот кусок кода:
PHP:
$PagesOfSiteFusbal=array(
"https://www.???.com/League/Football/NFL/1/Lines.aspx",
"https://www.???.com/League/Football/CAA/127/Lines.aspx",
"https://www.???.com/League/Football/Canadian/127/Lines.aspx");	
$PagesOfSiteHockey=array(
"https://www.???.com/ContestCategory/NHL+Futures/Lines.aspx",
"https://www.???.com/League/Hockey/Austria+NL+3/15/Lines.aspx",
"https://www.???.com/League/Hockey/Den+ABankL+3/15/Lines.aspx");
*********
//Это работает
for($ii=0;$ii<3;$ii++)
{
$html = file_get_contents( $PagesOfSiteHockey[$ii]);
//Обработка и вывод
}
//Здесь не работает
for($ii=0;$ii<3;$ii++)
{
$html = file_get_contents( $PagesOfSiteHockey[$ii]);

preg_match_all( "#<tr class=\"linesAlt(.+?)</tr>#is", $html, $matches );
//Обработка и вывод
}
 
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
 
у вас там в обоих случаях в цикле идет обращение к $PagesOfSiteHockey - и в первый раз и во второй. это опечатка. но возможно сервак считает, что его ДДоСят, когда вы обращаетесьт к одним и тем же URL повторно через несколько миллисекунд))
 
у вас там в обоих случаях в цикле идет обращение к $PagesOfSiteHockey - и в первый раз и во второй. это опечатка. но возможно сервак считает, что его ДДоСят, когда вы обращаетесьт к одним и тем же URL повторно через несколько миллисекунд))

Это действительно опечатка, извините. Вот насчет ДДос защиты - вполне возможно.
Так что же делать?:confused:
 
Это действительно опечатка, извините. Вот насчет ДДос защиты - вполне возможно.
Так что же делать?:confused:

посмотреть какую ошибку возвращает на самом деле веб-сервер. например, функцией get_headers.
наверняка он сам пытается Вам сказать, что у него болит, да Вы не слушаете, затыкаете уши.
"не могу открыть этот URL" - это, извините, ни о чем.

дальше решать настоящую проблему, а не гадать на кофейной гуще. если это ДЕЙСТВИТЕЛЬНО защита от DoS - поставить задержку между запросами, например.
и вообще, не обманывайте Судьбу и используйте в качестве HTTP-клиента хотя бы cUrl. как видите, Судьба оказалась сверху.
 
А чо Судьба с большой буквы? Я начинаю паниковать.

3c359198b00d53633c12c90f367e717a.jpg
 
Хорошая какая ссылка. Спасибо. Читаю. Мозг выносит на раз.
 
пожалуйста.
приобщайтесь к культурному наследию.
 
get_headers:failed to open stream: HTTP request failed!
Поставил слип(10) перед вторым циклом - тоже самое :(
dr_mousefly
Есть аналогичные функции? Или скажите куда копать хотя бы.
 
get_headers:failed to open stream: HTTP request failed!

ууу как все плохо. обломался HTTP запрос - хрен тебе, а не заголовки.
вот что бывает, когда функцию для чтения файлов используют не по назначению.

сдается мне, что все дело в символах "+" во второй пачке адресов, но не уверен.

Есть аналогичные функции? Или скажите куда копать хотя бы.

как грязи.
вот хотя бы:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

он хоть таким не страдает и из него хоть нормальные тексты ошибок сыпятся.

ЗЫ: оно конечно не причина, но... "for($ii=0;$ii<3;$ii++)" можно поинтересоваться, где это Вас научили так обходить массив?
 
Останнє редагування:
ты же уже 1 раз получил данные, смысл их еще раз дергать?
 
короче мне не спалось, было скучно и надоело тянуть кота за хвост)))
нате, работает:

Код:
$pagesHockey=array( 
    'https://www.pinnaclesports.com/ContestCategory/NHL+Futures/Lines.aspx', 
    'https://www.pinnaclesports.com/League/Hockey/Austria+NL+3/15/Lines.aspx', 
    'https://www.pinnaclesports.com/League/Hockey/Den+ABankL+3/15/Lines.aspx',
); 

foreach ($pagesHockey as $url) {                                                    
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
    $html = curl_exec($curl); 
    
    if (FALSE === $html) {
        throw new Exception(curl_error($curl));
    }
    
    // Have fun
}

валился оригинальный код из-за ошибки 502 Bad Gateway (превед, nginx!). не знаю, чем там ТС отлаживает, что он ее не увидел.
там сервер перенаправляет, чтобы проверить поддержку кукисов, и из-за адресов с плюсами очевидно происходила припездь с экранированием в HTTP-реппере к файловым функциям.
поскольку хрен его знает, что в нем происходит, непонятно и что он серверу отправлял, что тот давился и выплевывал 502.
можно сниффером посмотреть кому не лень и отправить баг-репорт на
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
 
Извиняюсь что долго небыло...
ЗЫ: оно конечно не причина, но... "for($ii=0;$ii<3;$ii++)" можно поинтересоваться, где это Вас научили так обходить массив?
Знаю, знаю...но видели бы вы мой код, после всех этих проб и ошибок...
Kompot: так мне ж разные надо
однозначно плюсов не должно быть
пробовал urlencode/decode - бестолку, даже вручную слешами и знаками плюсы менял - все равно null
dr_mousefly: Вчера тоже пол дня про**ся с курлами, почему-то заменяет в перенаправлении ихний домен моим локалхостом.
 
Дебажь, не должно подменять локалхостом. Проверил код маусфлая у себя — всё работает.
 
Kompot: так мне ж разные надо

в обоих случаях $PagesOfSiteHockey

PHP:
//Это работает
for($ii=0;$ii<3;$ii++)
{
$html = file_get_contents( $PagesOfSiteHockey[$ii]);
//Обработка и вывод
}
//Здесь не работает
for($ii=0;$ii<3;$ii++)
{
$html = file_get_contents( $PagesOfSiteHockey[$ii]);

preg_match_all( "#<tr class=\"linesAlt(.+?)</tr>#is", $html, $matches );
//Обработка и вывод
}
 
Дебажь, не должно подменять локалхостом. Проверил код маусфлая у себя — всё работает.

я ваще не уверен, что он мой пост прочитал :eek:

в обоих случаях $PagesOfSiteHockey

та он уже писал, что это опечтяка.
код в стартпосте поправить не Судьба.



Знаю, знаю...но видели бы вы мой код, после всех этих проб и ошибок...

м-дас, был у нас в институте ценный сотрудник царствие небесное.
брал где-то готовый пример и курочил его случайным образом, авось заработает как ему надо, вместо того, чтобы разобраться что к чему.
умер от передозировки водки. ну вы понели.
:піп:

вы хоть стандарт кодирования приведите в порядок:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

мне когда подпихивают проекты а-ля "наш предыдущий разработчик сказал что все сделал, но у нас ничего не работает",
мне вот больше всего надо еще и код за вами в божеский вид приводить. ;)
 
Останнє редагування:
dr_mousefly:
Прочитал, спасибо - заработало. Просто я тоже начал с курлом проверять и меня перемкнуло, что это мой код.
стандарт кодирования - извините, но я как бы самоучка в пхп и про стандарты могу только догадываться.
Всем спасибо.
 
Назад
Зверху Знизу