PHP Basit HTML DOM Parser kullanarak gzip sıkıştırmasını etkinleştirmek için nasıl

2 Cevap php

Ben PHP Basit HTML DOM Parser kullanarak gzip sıkıştırmasını etkinleştirmek için bir kaç şey denedim ama hiçbir şey şimdiye kadar çalışmak gibiydi. Ben kullanıcı aracısı değiştirmek için manged ettik, bu yüzden de gzip sıkıştırmasını etkinleştirmek mümkün olabileceğini düşündüm ini_set kullanıyorsunuz?

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;

Web sitesi, yukarıda testleri. Ben tamamen bu konuda yanlış şekilde gidiyorum varsa bana bildirin lütfen.

====

UPDATE

Aynı şeyi elde etmek için çalışıyor herkes için, sadece cURL kullanmak en iyisidir, daha sonra şöyle dom ayrıştırıcı kullanmak:

$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 Cevap

Sunucu ayarlarını (ob_start ("ob_gzhandler") veya php_ini ..) veri gzip'li ÇIKIŞ sunucu söyle - yanıt verileri gzip'li back (kabul) gelir böylece CURLOPT_ENCODING olduğunu.

Sadece gzip destek vermedi bir tarayıcı ile bu sayfaya giderse gibi. accept gzip verilere, size o ayrımı yapmak, böylece curl kullanmak zorunda.

Sadece veri çıkışları PHP script çok üstünde aşağıdaki satırı ekleyin:

  ob_start("ob_gzhandler");

Reference

-------Update--------

Ayrıca, bir. Htaccess dosyası ile gzip COMPRESION Şablonlar etkinleştirmek için deneyebilirsiniz. Bu gibi bir şey sizin siteleri içerik ama görüntü gziplemek olmalıdır:

# 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