Changeset 67806 in spip-zone


Ignore:
Timestamp:
Nov 19, 2012, 2:28:34 PM (7 years ago)
Author:
cedric@…
Message:

L'ouverture du buffer dans la fonction produire_page est trop tardive : elle provoque des fermetures anticipee de la connection et des pages blanches
On ouvre le buffer systematiquement, en debut de hit, sauf si un/des buffers sont deja ouverts et non vide (auquel cas on aura pas content-length ni connection:close qui evitent a l'utilisateur d'attendre)

Location:
_plugins_/cache_cool
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/cache_cool/cache_cool_options.php

    r67804 r67806  
    77 */
    88if (!defined("_ECRIRE_INC_VERSION")) return;
     9
     10// si deja un buffer avec une sortie on ne peut plus se lancer pour forcer le flush
     11if ($cache_cool_oblevel=ob_get_level()
     12        AND $cache_cool_oblength=ob_get_length()){
     13        spip_log("previous ob : $cache_cool_oblevel / previous length: $cache_cool_oblength",'cachecool'._LOG_DEBUG);
     14}
     15else {
     16        spip_log("starting ob",'cachecool'._LOG_DEBUG);
     17        ob_start("cache_cool_flush");
     18}
    919
    1020/**
     
    6777                        else {
    6878                                if (!is_array($GLOBALS['cache_cool_queue'])){
    69                                         spip_log("ob:".ob_get_level(),'cachecool'._LOG_DEBUG);
    70                                         ob_start("cache_cool_flush");
    7179                                        register_shutdown_function("cache_cool_process");
    7280                                        $GLOBALS['cache_cool_queue'] = array();
     
    126134        header("Content-Length: ".($l=ob_get_length()));
    127135        header("Connection: close");
    128         spip_log("Connection: close ($l)",'cachecool'._LOG_DEBUG);
     136        spip_log("Connection: close (length $l)",'cachecool'._LOG_DEBUG);
    129137        return $content;
    130138}
    131139
    132140function cache_cool_process(){
     141        // forcer le flush des tampons pas envoyes (complete le content-length/conection:close envoye dans cache_cool_flush)
    133142        ob_end_flush();
    134143        flush();
    135144        if (function_exists('fastcgi_finish_request'))
    136145                fastcgi_finish_request();
    137 
    138146
    139147  // se remettre dans le bon dossier, car Apache le change parfois (toujours?)
  • _plugins_/cache_cool/plugin.xml

    r67804 r67806  
    22        <nom>Cache Cool</nom>
    33        <auteur>[Cedric->http://www.yterium.net]</auteur>
    4         <version>0.3.0</version>
     4        <version>0.3.1</version>
    55        <etat>test</etat>
    66        <icon>images/cache_cool-128.png</icon>
Note: See TracChangeset for help on using the changeset viewer.