Как включить сжатие gzip с помощью PHP Simple HTML DOM Parser - PullRequest
4 голосов
/ 26 мая 2010

Я пробовал несколько вещей, чтобы включить сжатие gzip с использованием PHP Simple HTML DOM Parser, но пока что ничего не работает. Используя ini_set, мне удалось сменить пользовательский агент, поэтому я решил, что возможно также включить сжатие gzip?

include("simpdom/simple_html_dom.php");
ini_set('zlib.output_compression', 'On');   
$url = 'http://www.whatsmyip.org/http_compression/';
$html = file_get_html($url);
print $html;

Сайт выше проверяет это. Пожалуйста, дайте мне знать, если я пойду неправильно по этому пути.

====

UPDATE

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

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); // Define target site
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return page in string
curl_setopt($cr, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2');
curl_setopt($ch, CURLOPT_ENCODING , "gzip");     
curl_setopt($ch, CURLOPT_TIMEOUT,5); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects

$return = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

$html = str_get_html("$return");

Ответы [ 2 ]

1 голос
/ 27 мая 2010

CURLOPT_ENCODING таков, что ответ приходит назад (принимается как) сжатые данные - настройки сервера (ob_start ("ob_gzhandler") или php_ini ..) сообщают серверу о выходе данных в сжатом формате.

Точно так же, как если бы вы зашли на эту страницу с браузером, который не поддерживает gzip. Чтобы принять данные gzip, вы должны использовать curl, чтобы вы могли провести это различие.

0 голосов
/ 26 мая 2010

Просто добавьте следующую строку в самом верху PHP-скрипта, который выводит данные:

  ob_start("ob_gzhandler");

Ссылка

------- Обновление --------

Вы также можете попробовать включить gzip Compresion по всему сайту через файл .htaccess. Нечто подобное должно сжать контент ваших сайтов, но изображения:

# Insert filter
SetOutputFilter DEFLATE

# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Don't compress images
#SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...