PHP Gzip compress

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Gzip compress

    Hi,

    ich habe irgendwo mal gelesen, dass es moeglich ist PHP seiten mittels Gzip zu compressen und wieder auszugeben.. nun meine frage:

    ab wann lohnt es sich eine PHP datei mit gzip zu komprimieren und wenn ja wie geht so etwas? ..

    Danke.

  • #2
    Ein kleiner Artikel
    http://www.phpnuke.de/article.php?sid=958
    Hier im Forum zum Thema jpcache
    http://www.php-resource.de/forum/sho...?threadid=4510
    http://www.jpcache.com/

    Kommentar


    • #3
      @dESIGN
      Hi, Beim nächsten mal hänge bitte Deinem Posting folgendes an:

      Bemüht Euch bitte nicht, mich interessiert die Antwort/Lösung nicht. Ich schaue mir diesen Thread bestimmt nicht mehr an.

      Kommentar


      • #4
        Original geschrieben von hand
        @dESIGN
        Hi, Beim nächsten mal hänge bitte Deinem Posting folgendes an:

        Bemüht Euch bitte nicht, mich interessiert die Antwort/Lösung nicht. Ich schaue mir diesen Thread bestimmt nicht mehr an.

        ...ehrlich gesagt hab ich wirklich ein bisschen gepennt... sorry.

        Danke fuer die Url's hat mir zum teil weitergeholfen.. nur in verbindung mit datenbanken bin ich mir da noch nicht sicher.. kann ich die ausgabe einer datenbank auch optimieren/komprimieren?

        Kommentar


        • #5
          Das Prinzip ist folgendes:
          Alle Ausgaben die an den Browser geschickt werden, werden erst einmal zwischengespeichert, dann komprimiert und erst dann an den Browser geschickt.
          Im Prinzip so:
          PHP-Code:
          <?php

          ob_start
          ();
          /* Diese Funktion schaltet die Pufferung von Ausgaben ein. 
          Solange die Ausgabe-Pufferung aktiv ist, erfolgt keine Ausgabe 
          bei der Skript-Ausführung. Statt dessen werden alle Ausgaben
          in einem internen Puffer gespeichert. */

          echo "Hallo Welt";
          /* Dies ist eine Ausgabe, die jetzt im Puffer gespeichert wird, 
          also nicht direkt an den Browser geht. 
          In diesem Abschnitt würde sich im Prinzip Dein ganzes Script
          abspielen. */

          $contents ob_get_contents();
          /* Hier wird der gesamte Inhalt des Puffers ausgelesen und 
          in der Variable $contents gespeichert. */

          ob_end_clean();
          /* Diese Funktion verwirft den Inhalt des Ausgabe-Puffers und 
          deaktiviert die Pufferung. */

          $gzip_size strlen($contents);
          $gzip_crc crc32($contents);

          $contents gzcompress($contents9);
          $contents substr($contents0strlen($contents) - 4);
          /* Hier wird nun der Inhalt von $contents mittels gzcompress() 
          komprimiert. */

          header("Content-Encoding: gzip");
          echo 
          "\x1f\x8b\x08\x00\x00\x00\x00\x00";
          echo 
          $contents;
          echo 
          pack("V"$gzip_crc);
          echo 
          pack("V"$gzip_size);
          /* Erst jetzt wird alles an den Browser ausgegeben und zwar 
          komprimiert. */
          Ich hoffe damit ist auch Deine Frage beantwortet.
          Hier zwei Links mit Funktionen zur Gzip Komprimierung:

          http://leknor.com/code/php/view/clas...encode.php.txt
          http://php.weblogs.com/stories/http_compression

          Kommentar


          • #6
            @JanS

            jepp, das hat mir geholfen. vielen Dank.

            Kommentar


            • #7
              also bei dem beispiel bekomm ich als ausgabe :
              x1fx8bx08x00x00x00x00x00xÚóHÌÉÉWOÍ)u(P

              ne phpinfo zu meinem server
              http://www.teensweb.de/phptest.php

              Kommentar


              • #8
                ging das nicht einfacher?

                <?php ob_start ("ob_gzhandler"); ?>

                am anfang der Datei schreiben und fertig?

                Kommentar


                • #9
                  @sanjo:
                  ja, da hast du vollkomen recht. wollte das auch noch anmerken, habs dann vergessen.
                  ob_start ("ob_gzhandler") gibts ab PHP VErsion 4.0.4
                  und übernimmt alle Funktionen die oben von mir gepostet wurden. Ich habs oben nur so ausfühtlich gemacht, weil ich das Prinzip erklären wollte das wohl dESIGN nicht ganz klar war.

                  @Rev
                  Da Du Version 4.1.2 laufen hast, machs so wie Sanjo beschrieben hat.

                  Gruß Jan

                  Kommentar


                  • #10
                    hmm, ich bekomm damit auch nur
                    ‹ìËrÛ8ò<©ò?ÀL­ó²$ÊòS–4ågœD‰S¶ffw¶¶R ‰ˆH@€VìÔ|ë^öæ”Ãvƒ)É’-{>ØJ$`£»Ñè'.=k„&ŽZKÏ–àŠÑ®†›ˆµ•ô/tÄÌP3(±?~Ñt¤0L˜Ò¹¹ŒX©s9`ñÓ¾¦cØ7Sñµv`(É>ˆ‹> ëâýxQÃt…‹€}+#(Q,j:ѝ‡Œ‡@:0t~pöîs‡DTôÚcÍ÷ô‚žûŠ ²»\*á|º‰ð —‚„Ìï·™xÙ¡ªÇÌ+ò}éÙ¹QÐCš$í+_Ð(a刉ž —žñ.y9‚h’*YY™„Ó‰§â¢÷Ò]­¾B‡8ï wèˉ¹Nàn‘5×u‰85n.9ñjéÙAH•n³®É°²H3D3Þo‘—2êÿ+•R ETÑ©´ÆdZ-¿]…\Ž{u»tß}IU'Ï]ûÙÅ…)Ì—Š¢ŒëDHÁvÿDø ®¹aÁ]†PX¨ v—¡¼`êö h˜‚ ØQÅäG3]ìŸþ dð¾ Z§íöþÞYéxïà¨tpÚ>=«çyukÍÝ;pv'@NÞ½=i÷3‚{ÞµŸI¨ó“½ÃÓßr×=>^'@j‡“hfÁ읝݂¥s¶wðáFV÷Î>L±“‚Yí“ÌHà…³ôì §ÎÑ?;?5LÔ Ö?µß}ú0Ùókte²ko ŠxÔï÷”„•i:èSê•Êp8,Æ„2¯°Š/ã8Ü\Vx æ­+fø¥¶Vþ:è¡Chü‚Ј÷DÓñÁõ0•º‰FÚÈ\FÃP/bÄ“ T¡éŸE‘PÌ)k h¤-;ý¦“–@¹":ЬNFWN†ÆªÌ©j?…sjÕ"c^Ïä"eÐÈòÀ„M§ê®;-Òè‚¿$]ê½=Åi„}<îu@TZù¹ŒÖªµòÚº[®n[×e$¨òžü¶³þmsç‹'© Ê=ÞuFtwÖ2Þ ÁGoî8­†§Æ¼*p{­Ý:¤šì#¢FÅ»og ùk–ª­kÃO8hÿ/01s02ˆ,ö˜ê%LOÊþÏš© :a³Áý~ó#UþŠf8\ð ¹±¹¶^ÛÚ¨nmolTݝííí6Ý•®¢1ÓÌ4…\ ¥6ÍE¯.ÛÜ@b)ŠÑ wJq! gôä° ü‰—/^¬¾ƒ‚Ä_P ‚uó’éU#%6€Îj$}¼ð:àŠùF*Î46µ¡&±W1I¯(9º8‹(ï¦ë®f¦¾¾í¾xå´Æ¨7*{°^´ÕØ?³ßXr&zµdM0ÿé©Z“˜Â’±€‚É€¥‰& ÄDûa1 RN^'q_$Ý.‹^Ûn/J<ºiâ‡7ì¸ñ aæ ÈlçGŠdÑã½ä@k©OãÓOˆ³ûa·ã¡}”®»¹™!ÊôÌ ~оQó“ý>|}mó1|Ì"È9 [µçšy ðžž6nLžG6î^ð&IL;ýø&¶2Ò»OÚ~ƒ¶»;õÚ£Öö¯ò«,´=mÍÕv¼ýÚŽd§µýbEÃA$5F‰î¥cbØ*¸~AŠ%'¤Èâsm&†á‰ ¿j²²@haPÉ`.¤²¸ö#´ }DP3b¸&ÆK *Æ1`ËFBØŠÉ[i 2‡aH”I­L>JÍ€¿Õêºåé·l<"ÿHÃ"¡j³ ID¨DU “ú•©¾ú1°§Ø¦aÌ,¯)s8X¡€jȲ 1¨ ᗏ˜Ô ²æSÖ«g!LÂB‘«ÄFNÄ\¶“>ÄÕêújµVÊØL¥øäKnò%ÛõÇìK>ª},©˜*ÊX×\¯’Ã<€kÉi_ÏJ¹R[GJ°ù%‡jpÖi &]B=Yé*ü…‚ øC¼­…MiüÚG¼Ðÿ¶ íÙñPq‹,TŠ+qæ¥É®½dbyy™Ôå«Â}]p€õ‡š]í32~2Ê›Ò]ÌFù;DDZê0kÎ5F{ÿ Ñҝ6¤XjPRïòö'(րܵíì †G0½¤`–Rõ²@qm5Θêʨ6mSû ÌíЃ€¯ÿ}RòÉàn2¸Z½V{Ì×fh…ōÚsM.x›K O]ƒf»àwi.CÅRWŒlŽížÅÂ׉óÄ ´ôªÒÆ@wÈô>,­¨äBûâETô[‡ ¤¸_g³{û0ö|@!EU`’È2y²Ä›-qmë1[â{ù^vBvBcmÆ“Òéþ¹–9 ø:ÉÀõmŒde»yƒ¡îûJ‰}HX=eû¸7é)ä«€#Dx['v)\›´~VÙÞ§ÀG¯Xv˜ƒ†T”¼Ž 3Ýic™ h‘’ŽA"¬atòd¬B±´´åæÏD$ÊöÀüuZAÐH[€‡Ùç¸Ù˜´×)«é6ÖШõ”DvÐh;9íÎ,Cv®º&0KƒêÙFyÌÒy(ÒÙˆ92#|ÀRþ±.öؐBñ‹3Y¶4¦ìÅ{àÙ^|.Ÿ—­¼z eMŠ-¦=ND€/H@ÆiAú@:°°œï-YÉ&¿3îKQ´Ë†bD do¬ß– ×e‹‘?¼„Å~·²°²ˆ"1‰ÀÞȱŒ!Y`7Š˜ æœ%S ¡$yã6›$^$Y¯ h vÂeߪÄTHÙcXp?¤Æ,´™fMï¹ë£]°´Êô+… ¢®[ÍÀ%Åç9Hm„¿*¾Èäô@*ãVóDñisî!h{nZ«=òG"çÌ£Ú@nSDŸ±®¹'‡y€˜“Óž¹ ?O*³Ê?îúç rP(|Þ1WÝ3ˆPöŒò´ª¿‡LÂ\ e—ÔKƒâÜëÞÍ»ÇÓç´Fkž›}ÆK!GNkExz°ûô›þ’©³m#EOOdÂ(-7¬Y]±çAEÝ1Åõñ@µNâfu£¶s³;­!"ʲëéõ»¾l³Þ-x° ÓsÍÅÉp§8îägšó“ápaŽ—Ýôð6Át==7å®TqµŒŠGg²o¹ÿ†twgž±žâðú¤íU ÙW [Ädó&”Aóóéy‡PË-úvX‹/Œ {VCà:9S˜ÒsŠ7È+£O¦‡an&‰IÞ‡<ÀM¹”#\x‡ØY6T€ëDo«GŽb¦šÜc¦’9>÷N£GÊ›G%ž‰aô¨æ+¨Pº–õ\a^€ç7;¥½–Ѻ[6£µ~p–ìo£õy!ZÅÄ=ií–^Ýa^k‹V½-Bkâó½I½\„”¦PšºîßšÕ¿Ãxîç?–‰Yêz#[a<ÆÐmä=ù‰{²cï@ ’þ½‰MV{‹Ä3 ú¾“?Bº9_Šn¢YpOŠ£áw!i«æ{Ò›¨¸#—= ¸'Á© ‹‘Ä,”AâxOš£áÅ4G¼Žh+kªÍ6mÚâú¦“¿&fB®_ácöz֍ìòPÅœ[¿ ®ß* ½Zv$MŒÄ6Qrè×ñݹ/°"©Œ¸¼Ø=u[ض¯‚Xq-úÖˆ—#Eµæ~«UÇ2 ì(<ž'^̑몍£_ܸJº?4½pï—Ôª3“…³8›Ää¹`› ŸsÕ‰[†ØFÎY÷üE‘þ£`¦7Væ¿SYSŦ•B¥Ï+㋐E]•n’8­_ö÷K'<ê2[ÁÌLž°WųK“ñ7ƒz1(ÍÏë%…Ï^uªØwÒ— Šâ(àðëÉàÒ¾Ð5þ¯Q±¯þÿÿdm®:

                    als ausgabe

                    Kommentar


                    • #11
                      Kompression ?
                      Kein Problem
                      Hier:
                      Code:
                      [COLOR=red]
                      $phpversion = phpversion();
                      
                      if($phpversion >= "4.0.4pl1") {
                      if(extension_loaded("zlib")) { ob_start("ob_gzhandler"); }
                      }
                      	
                      else if($phpversion > "4.0") {
                      if(strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip')) {
                      if(extension_loaded("zlib")) {
                      $do_gzip_compress = TRUE;
                      ob_start();
                      ob_implicit_flush(0);
                      header("Content-Encoding: gzip");
                      }
                      }
                      }
                      [/COLOR]
                      Einfach in eine extra Datei packen und in jede Seite als erstes includen, oder eben in die Seiten eibauen, oder wie auch immer
                      Auf jeden Fall funktionierts
                      [font=comic sans ms]ups, never mind,
                      it´s just me[/font]

                      Kommentar


                      • #12
                        hmm nun versucht der ie 5.5 die datei downzuloaden...

                        Kommentar


                        • #13
                          Erstens: ohne compressionsfähigen Browser geht schonmal gar nix. also muß das logischerweise als erstes getestet werden.
                          Zweitens: Für die nicht gzip-fähigen Browser muß ne Alternative da sein.

                          Ergo:

                          Code:
                          function compressed_output()                        // diese Funktion startet die komprimierte Übertragung der fertigen Webseiten
                          {
                              $encoding  = getEnv("HTTP_ACCEPT_ENCODING");
                              $useragent = getEnv("HTTP_USER_AGENT");
                              $method    = trim(getEnv("REQUEST_METHOD"));
                              $msie = preg_match("=msie=i", $useragent);
                              $gzip = preg_match("=gzip=i", $encoding);
                          	
                              if ($gzip && ($method != "POST" or !$msie))
                              {
                                  ob_start("ob_gzhandler");
                              }	 
                              else
                              {
                                  ob_start();
                              }
                          }
                          
                          compressed_output();        // Kompression starten
                          Gruß Carsten

                          PS: wenns damit nicht funktioniert macht ihr definitiv was falsch, exakt diesen Code setze ich seit Monaten problemlos ein.
                          CAITS MovieBase für Windows - Filme verwalten mit System!

                          CAITS PowerCounter - mehr Statistik gibt es nicht!

                          Kommentar


                          • #14
                            gut, dann mach ich was falsch !
                            aber was?

                            mein code:

                            PHP-Code:
                            <?php
                            include("../funktionen.php");
                            compressed_output(); 
                            print(
                            "test");
                            ?>
                            in der funktionen.php steht deine funktion 1:1 kopiert..

                            url:
                            http://www.teensweb.de/community/php/board/index2.php

                            er versucht downzuloaden, jedenfalls bei mir

                            Kommentar


                            • #15
                              ...mal was anderes, ab wann lohnt es sich ueberhaupt diese Kompression einzusetzen? ..sprich ab wieviel kb's .

                              und werden auch die gif,jpg etc dateien gleich mit kompremiert, oder muss dieses wieder extra stattfinden?..

                              Kommentar

                              Lädt...
                              X