zlib compress και PHP

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

zlib compress και PHP

Δημοσίευση από cordis » 28 Οκτ 2003 15:57

η zlib library της PHP μας βοηθάει να κάνουμε της σελίδες μας πιο γρήγορες μέσω συμπίεσης.
Η σελίδα μας συμπιέζετε στον server, αποστέλλεται στον browser του επισκέπτη συμπιεσμένη και εκείνος αναλαμβάνει να την αποσυμπιέσει και να την εμφανίσει...

Για να δούμε εάν ο server μας υποστηρίζει κάτι τέτοιο μέσω PHP θα πρέπει να εκτελέσουμε την παρακάτω εντολή:

Κώδικας: Επιλογή όλων

<?php
phpinfo&#40;&#41;;
?>
εάν μας βγάλει κάτω από το Zlib ότι το Zlib support είναι enabled τότε μπορούμε να συνεχίσουμε στο επόμενο βήμα...

τοποθετώντας στην αρχή της σελίδας μας τον παρακάτω κώδικα το HTML θα αποστέλλεται συμπιεσμένο...

Κώδικας: Επιλογή όλων

<?php
ob_start&#40; 'ob_gzhandler' &#41;;
?>
ΠΡΟΣΟΧΗ! Θα πρέπει να είναι το πρώτο στοιχείο της σελίδας και πάνω - πάνω... πριν από το <?php δεν πρέπει να υπάρχει τίποτα... ούτε κενή γραμμή, ούτε ο χαρακτήρας του κενού...

Λόγο του ότι μπορεί κάποιος να έχει παλιό browser που δεν υποστηρίζει συμπιεσμένο περιεχόμενο καλό είναι να κάνουμε έναν έλεγχο πριν. Δηλαδή ο κώδικας μας πρέπει να γίνει:

Κώδικας: Επιλογή όλων

<?php 
if &#40;strstr&#40;$HTTP_SERVER_VARS&#91;HTTP_ACCEPT_ENCODING&#93;, 'gzip'&#41;&#41;
&#123;
  ob_start&#40; 'ob_gzhandler' &#41;;
&#125;
?>
π.χ.

Κώδικας: Επιλογή όλων

<?php 
if &#40;strstr&#40;$HTTP_SERVER_VARS&#91;HTTP_ACCEPT_ENCODING&#93;, 'gzip'&#41;&#41;
&#123;
  ob_start&#40; 'ob_gzhandler' &#41;;
&#125;
?>
<html>
<head>
</head>
<body>
  <p>This web page is now COMPRESSED!</p>
</body>
</html>
περισσότερα:
http://gr2.php.net/manual/en/function.ob-start.php
http://gr2.php.net/manual/en/function.ob-gzhandler.php

τσεκάρετε εάν η σελίδα σας είναι όντως συμπιεσμένη στο:
http://www.desilva.biz/gzip-test.php
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Άβαταρ μέλους
simone
Δημοσιεύσεις: 127
Εγγραφή: 05 Απρ 2003 03:03

zlib compress και PHP

Δημοσίευση από simone » 26 Ιαν 2004 20:36

Και επειδή μπορεί να υπάρξει ένα πρόβλημα του τύπου:

Warning: (null)() [ref.outcontrol]: output handler 'ob_gzhandler' cannot be used twice in Unknown on line 0

Η λύση είναι η πρόσθεση μιας γραμμης κώδικα δηλ:

αντι για

Κώδικας: Επιλογή όλων

ob_start&#40;'ob_gzhandler'&#41;;
[/color]

βάζουμε:

Κώδικας: Επιλογή όλων

ob_end_clean&#40;&#41;; 
ob_start&#40;'ob_gzhandler'&#41;;
[/color]

Επειδή:
PHP 4.3.x handles code a bit tighter than the previous versions which is good overall. If the php.ini the output_buffering is set to "On". What this does is make sure all coding is validated within the headers. The headers cannot be called from outside the head tags and prevents the headers being rewritten by coding out side of the head tags. This is a good thing to have, but previously coded applications which did not validate the headers (because it was not required) will have problems.

The error is because phpbb is not clearing out the ob_start ('gzhandler'); . The gzhandler compresses your pages for faster delivery from the server. (Gzip)

This error occurs when the headers are being called more than once. The ob_end_clean() ends the previous compression cycle (cleans the output buffering) and ob_start("ob_gzhandler") starts the cycle again for the new page.

Άβαταρ μέλους
hik-hok
Reporter
Δημοσιεύσεις: 3571
Εγγραφή: 09 Μαρ 2003 10:45
Τοποθεσία: Agrrrrrrrrrr...... γάβ γάβ!!
Επικοινωνία:

zlib compress και PHP

Δημοσίευση από hik-hok » 26 Ιαν 2004 21:15

πάντως οι συμπιεσμένες σελίδες στους επισκέπτες που χρησιμοποιούν το norton internet security ανοίγουν πιο αργά
Εικόνα

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

zlib compress και PHP

Δημοσίευση από Rapid-eraser » 26 Ιαν 2004 21:25

vai alla katavalovouv ligotero bandwidth kai dimiourgouv ligotero traffic :P
bebea gia va eimaste ilikrivis ama to site mas apotelite movo apo fotografies dev katafervei kai pola pragmata to gzip
movo ama eimaste pixtra sto html kati givete kalo
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
geraki
Honorary Member
Δημοσιεύσεις: 1404
Εγγραφή: 26 Ιαν 2004 20:10
Τοποθεσία: Θεσσαλονίκη
Επικοινωνία:

zlib compress και PHP

Δημοσίευση από geraki » 31 Ιαν 2004 23:47

Αν ο server είναι Apache με mod.Gzip δεν χρειάζεται αυτό στην PHP, σωστά;

Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10242
Εγγραφή: 28 Ιούλ 2001 03:00

zlib compress και PHP

Δημοσίευση από Cha0s » 01 Φεβ 2004 14:17

Den to exo xrisimopoiisei pote alla logika nai tha isxiei ayto pou les....

As pei kapios pou exei asxolithei gia sigouria :)

Άβαταρ μέλους
iNDEFiX
Honorary Member
Δημοσιεύσεις: 2569
Εγγραφή: 20 Δεκ 2002 00:48
Τοποθεσία: κλειστή λόγω έργων
Επικοινωνία:

zlib compress και PHP

Δημοσίευση από iNDEFiX » 21 Φεβ 2004 01:52

geraki έγραψε:Αν ο server είναι Apache με mod.Gzip δεν χρειάζεται αυτό στην PHP, σωστά;
Analogos. Sinithos gia na tis peraseis apo compression (mod_gzip) prepei na xrisimopoihseis tis ekshs grammes sto conf tou apache:

mod_gzip_on Yes
mod_gzip_can_negotiate Yes
mod_gzip_dechunk Yes
mod_gzip_minimum_file_size 600
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 100000
mod_gzip_keep_workfiles No
mod_gzip_temp_dir /usr/local/apache/gzip
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.txt$
mod_gzip_item_include file \.jsp$
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.pl$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x&#8722;httpd&#8722;php
mod_gzip_item_include mime ^httpd/unix&#8722;directory$
mod_gzip_item_include handler ^perl&#8722;script$
mod_gzip_item_include handler ^server&#8722;status$
mod_gzip_item_include handler ^server&#8722;info$
mod_gzip_item_exclude file \.css$
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude mime ^image/.*


Kai episis an valeis to module mod_gunzip mporeis na zipareis html arxeia se morfh page.html.gz kai na ta kanei delivered ston client. Afto proipothetei tis parakato grammes sto httpd.conf:

AddType text/html .htmz
AddHandler send&#8722;gunzipped .htmz


kai rename to arxeio page.html.gz se -> page.htmlz

Άβαταρ μέλους
iNDEFiX
Honorary Member
Δημοσιεύσεις: 2569
Εγγραφή: 20 Δεκ 2002 00:48
Τοποθεσία: κλειστή λόγω έργων
Επικοινωνία:

zlib compress και PHP

Δημοσίευση από iNDEFiX » 21 Φεβ 2004 01:53

Kalo einai vevaia na mhn einai energopoihmeno global ston server giati merikoi browsers den ypostirizoun compressed delivery :wink:

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες