Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 29.07.2012
Сообщений: 4

file_get_contents(http://) иногда работает иногда нет

29.07.2012, 22:06. Показов 4406. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такой код:
PHP
1
echo file_get_contents('http://example.com/');
Иногда работает иногда нет, все что связано с коннектом к серверу глючит, такие функции как get_headers и т.д. тоже иногда работают иногда нет. Получается в результате либо то что мне нужно, либо false.

В чем может быть проблема? Кто сталкивался подскажите пожалуйста. Может быть не хватает памяти.

Параметр allow_url_fopen у меня включен:
allow_url_fopen = On
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.07.2012, 22:06
Ответы с готовыми решениями:

Запрос иногда работает, а иногда - нет.
Написал запрос вида: data = Request.QueryString('data') sql='SELECT * FROM svch where (((svch.Data)=#' & data & '#));' В урл ввожу...

Openssl. Иногда вызов функций шифрования проходит нормально, иногда нет
Всем привет! Использую библиотеку openssl для шифрования / дешифрования. Генерирую ключи следующим образом: RSA...

Почему иногда отслеживается нажатие на три клавиши сразу, а иногда нет
Доброй ночи, кто может объяснить почему иногда отслеживает нажатие на три кнопки сразу, а иногда нет. И как выйти с ситуации *( P.S. Пишу...

8
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
29.07.2012, 22:23
так это у вас он включен. но не факт что на других серверах он включен

Добавлено через 42 секунды
можете cURL-ом попробовать, может им будет нормально..
0
 Аватар для basili4
201 / 199 / 4
Регистрация: 13.06.2012
Сообщений: 1,009
Записей в блоге: 3
30.07.2012, 10:56
>так это у вас он включен. но не факт что на других серверах он включен
Это их проблемы. file_get_contents зависит от настроек только своего сервера!!!

Без контекста не определится. Могут быть проблемы с самим сервером донором. Может Ваш скрипт тащит слишком активно страницы что его распознают как бота блочат.
Разбивайте код на блоки. Тестируйте по отдельности. Проверяйте забор страницы в одиночном режиме руками вписали (url забрали) делайте паузы перед забором секунд по 5.
0
0 / 0 / 0
Регистрация: 01.08.2012
Сообщений: 9
01.08.2012, 21:08
У меня похожая проблема. В цикле с помощью file_get_contents() загружаю около 100 страниц с внешнего сайта и некоторые из них возвращаются в виде кракозябров вот такого типа
PHP
1
‹мY[oЫЦћ?Е)ѓVvm‰’_"KкЫY3$m`{Љў((сXўM‘*IЩqТ|·^^Љ¶KљmШЫE6V2iIоЪb–эО9¤n–\w+°=L†m^юзї+ыЪъ»kЫпЭЫ ooЯЅCоэожќЫkDЉЛтжЧdy}{]јёћH’mK1lНСLCСeyг)?•e/уЩ·7VЧqгhЋNуwЁб( «–!џ‘o‚NЗу2дiГ;v»nл%9uЫnГm‘йњ»ДЇїhФ}П%чj¶}H65УЙКO¶ Ш”8ЉUўNоCЗ¬‚ВЭЌнUb(љ[ЯШZЫј}oыц»пђўi8 љ“ъd:Э шз$xЦр|Чч^‘З-ч?ьщЁн5зИqЅQoьи}KNѓfэиїВ9v[g|МбЩi;иx-Ж*0µл]Їы’4|п„імЧымµПNOПЗIњя?яЅшЃон*-ў|пТўГ3XВ.P« {qНPй}„Л q[{@yҐ"Їi•*L1д†ЃјJS”Є‹Ѕь“„‹2+?¬°_БэОКeЄЁ››п®їG Ґ5–re n.ўћзј\2ј+SVIq
Причем, если скрипт запустить ещё раз, может быть такое, что страница, которая раньше была с кракозябрами вернулась в нормальном html формате, а которая была в нормальном формате теперь в кракозябрах. Че за дела? Выставил паузу между загрузками страниц, не помогло. Может у кого есть мысли по этому поводу.
0
0 / 0 / 0
Регистрация: 29.07.2012
Сообщений: 4
03.08.2012, 19:09  [ТС]
Я решил проблему. Оказывается у PHP какие то настройки с Apache. В итоге я просто через консоль обращаюсь к файлу и получаю результат. Криво, но работает, а больше мне и не надо.

Файл file_get_contents.php:
PHP
1
2
3
4
5
6
7
8
9
<?
if(isset($argv[1])) {
    $url = $argv[1];
    $url = urldecode($url);
    
    $data = file_get_contents($url);
    echo $data;
}
?>
Функция замена для file_get_contents:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
function filegetcontents($url) { // http://apple.com
    $retVal = '';
    ob_start();
    
    $url = urlencode($url);
    $url = '"'.$url.'"';
    $command = 'php /_full_path_to_file_/file_get_contents.php '.$url;
    system($command);
    
    $retVal .= ob_get_contents();
    ob_end_clean();
 
    return $retVal;
}
?>
Пример использования:
PHP
1
2
3
<?
echo filegetcontents('http://apple.com');
?>
Код не претендует на идеал, но мне он подходит, может кому пригодится. Удачи =)
0
0 / 0 / 0
Регистрация: 01.08.2012
Сообщений: 9
03.08.2012, 20:36
Я, кстати, тоже свою задачу решил. Вот здесь{ссылка удалена} дали дельный совет.
PHP
1
2
3
4
5
6
7
8
9
if(isset($http_response_header[6]) and $http_response_header[6] == "Content-Encoding: gzip") {
$html = "";
$fp = gzopen($file, "r");
  while (!gzeof($fp)) {
   $buffer = gzgets($fp, 4096);
   $html .= $buffer;
          }
   gzclose($fp);                           
}
0
0 / 0 / 0
Регистрация: 29.07.2012
Сообщений: 4
03.08.2012, 20:39  [ТС]
Спасибо, пригодится.

Правда одно но, на будущее, эти параметры в хэдерах часто "прыгают", сегодня ключ 6, завтра 3.

Используйте такую штуку:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function get_param_from_headers($arr, $type) {
    $headers = array();
    foreach($arr as $v) {
        $headers[] = split(': ', $v);
    }
    
    $result = false;
    foreach($headers as $v) {
        if(strtolower($v[0]) == strtolower($type) && isset($v[1])) {
            $result = $v[1];
        }
    }
    
    return $result;
}
Пример использования получения резалта по конкретному параметру:
PHP
1
2
$headers = get_headers('http://apple.com');
echo get_param_from_headers($headers, 'Content-Encoding');
0
0 / 0 / 0
Регистрация: 01.08.2012
Сообщений: 9
03.08.2012, 21:08
Ага, учту!

Добавлено через 4 минуты
Блин, мою ссылку удалили. В общем, дело было в том, что некоторые страницы были в архиве. По приходящим заголовкам надо проверить архив это или нет и если архив, открыть его и прочитать. Код выше.

Добавлено через 16 минут
javac, твоя функция вообще в тему оказалась. Будет как дополнение для чтения архивированных файлов.
0
0 / 0 / 0
Регистрация: 29.07.2012
Сообщений: 4
03.08.2012, 22:20  [ТС]
Да, я понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.08.2012, 22:20
Помогаю со студенческими работами здесь

Почему иногда функции передается значение int, а иногда - нет?
1 случай: void Function_1(int* &amp; rVarOne, int* &amp;rVarTwo) { /* Какие-то операции с указателями: rVarOne++; *rVarOne =...

Почему программа иногда возвращает не нулевой результат, а иногда нуль?
С чем подобное может быть связана?

Сборка игрового компа(иногда стримы) иногда для монтажа
Привет, ребята! Нужна помощь по сборке, что скажете на комплектации ниже, я выбрал по макс. бюджету, дороже ничего не могу поменять,...

Компьютер зависает, иногда с полоской по монитору, иногда с синим экраном.
У меня такая штука с компом: включаешь компьютер, можешь подолгу за ним сидеть: играть, смотреть фильм, ну и тому подобное(что угодно)......

Компьютер сам отключается. Иногда моментально, иногда через время
Привет всем. В общем комп при включении издает какой то треск и сразу отключается. Иногда бывает работает некоторое время и все равно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru