file_get_contents, как обойти Warning?

12
Elephant
На сайте с 20.03.2006
Offline
23
5265

Если file_get_contents хочет выдать Warning, мол, "failed to open stream", то как можно избежать ошибки, и не дожидаться её, а по прошествии, скажем, 20 секунд, игнорировать эту функцию без последующего ожидания и Warning'а ?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

т.е. если 404 вызывающего документа то остановиться?

или

просто вставить <?error_reporting(0);?> ?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
edogs software
На сайте с 15.12.2005
Offline
775
#2

@file_get_contents как вариант.

Но по уму

а) Если это файлы, то file_exists сначала

б) Если это www, то file_get_contents выкинуть и переписать на curl или fsockopen

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Elephant
На сайте с 20.03.2006
Offline
23
#3
LEOnidUKG:
т.е. если 404 вызывающего документа то остановиться?
или
просто вставить <?error_reporting(0);?> ?

И да, и нет, 404 ошибка не обязательно может быть, может быть другая ошибка - например долгое считывание страницы - я с таким сталкивался. Страница загружается через несколько минут, и "failed to open stream" возникает раньше по времени.

Однако, давайте рассмотри случай 404 ошибки.

Нужно не остановиться, а предварить возникновение Warning, и проскочить к следующему действию.

Elephant
На сайте с 20.03.2006
Offline
23
#4
edogs:
б) Если это www, то file_get_contents выкинуть и переписать на curl или fsockopen

Да, это www. Спасибо за подсказку. Пойду читать про curl и fsockopen. Это я обратки проверяю через file_get_contents и eregi. :) Вернее, делаю так, чтобы проверка очередной ссылки не блокировала время.

AM
На сайте с 12.09.2007
Offline
47
#5
Elephant:
Да, это www. Спасибо за подсказку. Пойду читать про curl и fsockopen. Это я обратки проверяю через file_get_contents и eregi. :)

почитайте еще про preg , а не eregi ... это посовременнее :)

С уважением, Морозов Андрей, разработчик проекта eTXT.ru (http://www.etxt.ru/?r=morozov), icq 55377667
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#6
Elephant:

Однако, давайте рассмотри случай 404 ошибки.

if($t=@file_get_contents($url))

{
echo 'Страница есть';
}
else {echo '404';}
Elephant
На сайте с 20.03.2006
Offline
23
#7
AndreM:
почитайте еще про preg , а не eregi ... это посовременнее :)

Хм...

Подсказка: Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке (прим. - мой случай). Используйте для этого strpos() либо strstr(), поскольку они выполнят эту задачу гораздо быстрее.

http://www.php.net/preg-match

Elephant
На сайте с 20.03.2006
Offline
23
#8

А может, вот это подойдёт:

The only way I could get get_file_contents() to wait for a very slow http request was to set the socket timeout as follows.

ini_set('default_socket_timeout', 120);
$a = file_get_contents("http://abcxyz.com");

Other times like execution time and input time had no effect.

http://www.php.net/manual/ru/function.file-get-contents.php

Kolyaj
На сайте с 28.03.2006
Offline
69
#9
AndreM:
почитайте еще про preg , а не eregi ... это посовременнее

Это не посовременнее, это по другому.

Elephant:
Подсказка: Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке (прим. - мой случай). Используйте для этого strpos() либо strstr(), поскольку они выполнят эту задачу гораздо быстрее.

А как это относится к сравнению preg и ereg?

Elephant
На сайте с 20.03.2006
Offline
23
#10
edogs:
б) Если это www, то file_get_contents выкинуть и переписать на curl или fsockopen

Это www. Ознакомился. Думаю, перепишу на curl. Большое спасибо за дельный совет.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий