Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: file_get_contents

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: обход ошибки
demot
Отправлено: 08 Декабря, 2010 - 21:48:41
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010  


Помог: 3 раз(а)




в начале скрипта код
PHP:
скопировать код в буфер обмена
  1. $cont = file_get_contents('http://сайт') or die('Нет связи');

после этого идут всякие функции, проверки и т.п.

Бывает случается, что скрипт не может соединиться с http://сайт и тогда на экране выдается ошибка Warning: file_get_contents....бла-бла-бла ....failed to open stream и выполнение скрипта на этом заканчивается, почему-то не выводится "Нет связи", как написано в or die.
Вопрос, как можно сделать так, чтоб не высвечивалась эта ошибка, а просто выдавалось сообщение, что с сервером соединиться не удалось?

P.S.
set_time_limit() не предлагать Улыбка
 
 Top
OrmaJever Модератор
Отправлено: 08 Декабря, 2010 - 22:31:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




ну вот и первая тема связаная с этой функцией...
fsockopen() или cURL


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Декабря, 2010 - 22:32:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. $cont = @file_get_contents('http://сайт');
  2. if(!$cont) 'Нет связи...';

Пашет???
 
 Top
CenapaTop
Отправлено: 09 Декабря, 2010 - 06:37:55
Post Id



Частый гость


Покинул форум
Сообщений всего: 166
Дата рег-ции: Авг. 2009  


Помог: 1 раз(а)




error_reporting(0);

$cont = @file_get_contents('http://сайт') or die('Нет связи');

(Отредактировано автором: 09 Декабря, 2010 - 06:43:02)

 
 Top
demot
Отправлено: 09 Декабря, 2010 - 07:31:20
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010  


Помог: 3 раз(а)




CenapaTop, ваш вариант не подходит, т.к. при неудачном соединении работа скрипта останавливается и выдается ошибка.

DeepVarvar, ваш вариант тоже не подходит, т.к. при неудачном соединении ничего не происходит, т.е. все ошибки скрываются, но работа скрипта так же прекращается и нет возможности вывести альтернативное сообщение об отсутствии связи.

OrmaJever, попробовал через fsockopen():
PHP:
скопировать код в буфер обмена
  1. $fp = fsockopen ("php.su", 80, $errno, $errstr, 30);
  2. if (!$fp) {
  3. echo "$errstr ($errno)<br>\n";
  4. } else {
  5. echo "Связь прошла успешно";
  6. }

Соединение проходит и на экран выводится "Связь прошла успешно", в принципе все в порядке. А вот если написать заведомо нерабочий адрес, например php1.su, то не выдается сообщение с кодом ошибки, а выдается:
Цитата:
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. in Z:\home\test1.ru\www\test.php on line 10
Warning: fsockopen() [function.fsockopen]: unable to connect to php1.su:80 (php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. ) in Z:\home\test1.ru\www\test.php on line 10
php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. (0)
 
 Top
demot
Отправлено: 09 Декабря, 2010 - 10:03:14
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010  


Помог: 3 раз(а)




OrmaJever, спасибо за подсказку, через cURL получилось отменно!
 
 Top
OrmaJever Модератор
Отправлено: 09 Декабря, 2010 - 12:39:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




fsockopen() это стандартная функция языка для неё нужно проверять юрл и тд. А курл отдельная библиотека в котороый много чего учтено поэтому лутше конешно использовать её.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JustUserR
Отправлено: 09 Декабря, 2010 - 13:31:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




demot пишет:
Вопрос, как можно сделать так, чтоб не высвечивалась эта ошибка, а просто выдавалось сообщение, что с сервером соединиться не удалось
Процесс осуществления подачи HTTP-запроса программным образом к удаленному web-серверу оптимально может быть реализован средствами CURL или fsockopen-фунций - которые позволяют проводить конфигурацию соединения и определенять как кодовую таблицы представления передаваемый информционных полей а акже анализировать конкретную причину возникающей ошибки


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Andrew_li
Отправлено: 04 Июня, 2013 - 12:47:38
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Добрый день, форумчане, подскажите почему не работает, файл сохраняется, но когда открываешь, выдает текст

Спойлер (Отобразить)


PHP:
скопировать код в буфер обмена
  1.  
  2. $file = '/files/doc.rtf';
  3. $file = $_SERVER["DOCUMENT_ROOT"] . $file;
  4. $fsize = filesize($file);
  5.  
  6. if(file_exists($file))
  7. {
  8.   $filedata = file_get_contents($file);
  9.   $filedata = str_replace('SUMMA', 152000 , $filedata);
  10.   $filedata = str_replace('PAYNAME', "Админ", $filedata);
  11.  
  12.   header("HTTP/1.0 200 OK");
  13.   header("Content-Description: File Transfer");
  14.   header("Content-type: application/octet-stream");
  15.   header("Content-disposition: attachment; filename=\"doc.rtf\"");
  16.   header("Content-Length: " . $fsize);
  17.   print $filedata;
  18.   exit();
  19. }
  20.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB