Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[ZLib] Activation dynamique de la compression


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre éprouvé
    [ZLib] Activation dynamique de la compression
    Nouvelle question sur le sujet :

    Cas 1 : dans php.ini : zlib.output_compression = 1.

    test.php v1 :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo "<html><head></head><body>";
    for( $i = 0; $i < 10000; ++ $i ) echo "Ligne $i pour tester la charge<br/>";
    echo "</body></html>";


    sortie HTML : 26 ko (369 ko si output_compression est à 0), OK.

    test.php v2 : on annule la compression au début du script :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    ini_set("zlib.output_compression", "0");
    [...]


    sortie HTML : 369 ko, OK.

    Cas 2 : dans php.ini : zlib.output_compression = 0.
    [+reboot serveur]

    test.php v3 : on active la compression au début du script :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    ini_set("zlib.output_compression", "1");
    [...]


    sortie HTML : 369 ko...
    Idem si j'utilise "On" ou "true" au lieu de "1".
    Je ne comprends pas pourquoi il est possible de désactiver la compression mais pas de l'activer...

  2. #2
    Membre éprouvé
    salut,
    dans les commentaires sur la page zlib du manuel php, il y a écrit :
    You can't enable zlib.output_compression via ini_set(). You have to use php.ini.
    et aussi
    if you don't set this via php.ini or Apache configuration it's a no-go. I have to use ob_start("ob_gzhandler"); instead.
    Tu peux essayer avec cette proposition.

    Je crois que ça peut aussi fonctionner via un .htaccess

  3. #3
    Membre éprouvé
    En effet, ob_start()/ob_end_flush() font l'affaire.

  4. #4
    Membre éprouvé
    ... font l'affaire sous Apache... Par contre, la solution
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function initOutputFilter() {
      ob_start('ob_gzhandler');
      register_shutdown_function('ob_end_flush');
    }
    initOutputFilter();

    n'a pas l'air d'être du goût de IIS. Il ne compresse rien du tout et j'ai une erreur js sur des appels Ajax... Pfff... Vivement la retraite...

    [edit : ha non, en commentant l'entrée zlib.output_compression_level, au lieu de la mettre à vide ou à 0, ça marche...]