File_get_contents не получает страницу полностью?

file_get_contents не получает страницу полностью, а только часть страницы. В чем может быть проблема?
  • Вопрос задан
  • 8544 просмотра
Решения вопроса 1
Stdit
@Stdit
Сервер отдаёт только первый чанк, видимо криво настроен. Её в текстовой форме не может скачать ни curl, ни wget. Браузер получает полную страницу потому, что использует gzip. Чтобы получить полную страницу через gzip на php, надо сделать что-то такое:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://nightout.ru/photoreport/alpen-grotte/after-party-zolotoi-sostav-0?page=0');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Encoding: gzip'));
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
echo gzinflate(substr($result,10));
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
dali
@dali
не мучайтесь с file_get_contents, используйте cURL для получения страницы, у меня он даже быстрее отрабатывает чем file_get_contents. Перешел на cURL после ошибок вида PHP Warning: file_get_contents('...'): failed to open stream: Connection timed out in /var/www/…
Ответ написан
Sincous
@Sincous
Использовал file_get_contents, fsockopen, потом как заметили выше перешел на cURL, и даже это не решило проблему. (использовал на скачке изображений из вконтакте).
Поэтому для страниц где не нужна авторизация а нужно лишь получение контента рекоменлую просто
<?php
$l = file($url);
$content = implode('', $l);
?>
Ответ написан
Meliborn
@Meliborn
В отсутствии подробностей в вопросе.
Ответ написан
1. www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen?
2. error_reporting(E_ALL); ini_set('display_errors', true) // это так, на авось

3. Плохой протокол не ХТТП 1.1 а 1.0? Transfer-Encoding:chunked? www.php.net/manual/en/context.http.php «PHP prior to 5.3.0 does not implement chunked transfer decoding.».
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы