|
ulf-wendel.de   
|
|
 Home < PHP Schulung  < Cache-Technologien  < Lebensretter  < Gegenmaßnahmen    |       |  
Print Version    
---
|
|
 Home 
 PHP Projekte 
 PHP Schulung 
    Informationsquellen 
    Geschichte 
    Core PHP 
    Fortgeschrittenes PHP 
    Templates 
    Cache-Technologien 
       Was cachen? 
       Wo cachen? 
       Probleme 
       Ersetzungsstrategien 
       Aktualität 
       Speichermedien 
       Assembly 
       Lebensretter 
          Verursacher 
          Trugschluß 
          Gegenmaßnahmen 
          Ergebnis I 
          Ergebnis II 
    OOH Forms 
 Technik der Site 
 Büchertipps 
 Fotografie 
 Airbrush 
 Kontakt 
 Stuff 

Gegenmaßnahmen

Die Auskommentierung der Grafiken führte zu einer sofortigen Serverentlastung, was bewies das der Verursacher gefunden war. Als Gegenmaßnahme wurde ein Code- (APC 1.1.0) und ein Userland-Cache (PEAR-Cache) eingesetzt.

Zur Beschleunigung wurde die Startseite mit einem leicht modifizierten PEAR OutputCompression Cache umgeben. So waren nur wenige Zeile Code einzufügen, der bestehende Code blieb unverändert.

Alle kritischen image.php Aufrufe werden in der Methode end() in statische Grafiken gewandelt.


Lebensretter Top

<?php
  
require_once('Cache/OutputCompression.php');

  class 
Lebensretter extends Cache_OutputCompression {

    function 
end($expire 0$userdata "") {
        global 
$HTTP_HOST;

        
$content ob_get_contents();
        
ob_end_clean();

        
// die Problemverursacher
        
if (preg_match_all('@src="(image\.php\?id=(\d+))"@'$content$matchesPREG_SET_ORDER)) {

          
// nicht mehr das 63k Skript image.php aufrufen, PHPLib-DB mit 12k benutzen
          
include_once('db_mysql.inc');
          
$db = new Db_Sql;

          
reset($matches);
          while (list(
$k$match) = each($matches)) {

            
$query sprintf('select * from imagebrowser where img_idx = %d',
                              
$match[2]
                            );
            
$db->query($query);
            
$db->Next_Record();

            
$filename 'img_' md5($db->f('imagename'));
            
// alle Binärdaten ins Dateisystem!
            
$fp = @fopen('www.example.com/pages/image_cache/' $filename'w');
            if (!
$fp)
              continue;

            
fwrite($fp$db->f('image'));
            
fclose($fp);

            
// img-Tag verändern, statisches Files benutzen
            
$content str_replace($match[1], '/image_cache/' $filename$content);
          }

        }

        
// store in the cache
        
if ($this->caching) {
            
$this->extSave($this->output_id$content$userdata$expire$this->output_group);
            return 
$this->content;
        }

        return 
$content;
    } 
// end func end()

  
// end class Lebensretter
?>

<  ^  >

 Neues

 XML/XSLT Menu
 OOH-Form Rewrite

 PEAR Cache:
  SHM Container

 Suchstring Parser
 Buchrezensionen
 PEAR Cache:
  OutputCompression

 PEAR Menu Browser
 PEAR Menu Tutorial 
 PEAR Cache


 Tipp

Download Version:
oben rechts,
Download *.tar.gz
|
| --- |
|
  Top   |   <  ^  >   |   phpOpenTracker Statistik   |   URL: http://www.ulf-wendel.de/schulung/cache/beispiel/gegenmassnahmen.php   |   Stand: 05.02.2002   |   © Ulf Wendel   
|
| --- |

0.017 s Bearbeitungszeit, 0.002 s IT[X], 0.004 s Menu 3