Xerxes
17-11-2002, 14:02
Wenn man eine Webseite gzip-komprimiert ausgeben will, muss deren Inhalt ja an einer Stelle komprimiert werden; dies geschiet bekannter Maßen mit der Funktion gzcompress( $contents, $level ).
Jetzt gibt es aber zwei Möglichkeiten:
a) Man gibt der Funktion immer den Wert 9 für maximale Komprimierung mit auf den Weg, damti die Seiten immer so klein wie möglich werden und möglichst wenig Traffic verbrauchen.
b) Man übergibt je nach CPU-Auslastung einen unterschiedlich hohen Wert. Das hat den Vorteil, dass eine ausgelastete CPU nicht noch zusätzlich Power verbraucht um einen Seite mit Level 9 zu komprimieren.
Die CPU-Auslastung kann man entweder mit folgender Funktion
function linux_loadavg()
{
$buffer = '0 0 0';
$f = fopen( '/proc/loadavg', 'r' );
if( !feof( $f ) )
{
$buffer = fgets($f, 1024);
}
fclose( $f );
$load = explode( ' ', $buffer );
return max( (float)$load[0], (float)$load[1], (float)$load[2] );
}
oder durch mit folgendem Script
if ($uptime=@exec('uptime'))
{
preg_match('/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/',$uptime,$val);
echo "Serverlast: $val[1] $val[2] $val[3]";
}
feststellen.
FRAGE: Beanspruchen beide Methoden den Prozessor nicht mehr, als wenn man eine Seite standardmäßig mit Level 9 komprimiert? Besonders bei vielen Seitenaufrufen sind Datei-Operationen doch recht langsam und ich bezweifle, dass das ständige aufrufen von 'uptime' den prozessor nicht irgendwann nervt....
Jetzt gibt es aber zwei Möglichkeiten:
a) Man gibt der Funktion immer den Wert 9 für maximale Komprimierung mit auf den Weg, damti die Seiten immer so klein wie möglich werden und möglichst wenig Traffic verbrauchen.
b) Man übergibt je nach CPU-Auslastung einen unterschiedlich hohen Wert. Das hat den Vorteil, dass eine ausgelastete CPU nicht noch zusätzlich Power verbraucht um einen Seite mit Level 9 zu komprimieren.
Die CPU-Auslastung kann man entweder mit folgender Funktion
function linux_loadavg()
{
$buffer = '0 0 0';
$f = fopen( '/proc/loadavg', 'r' );
if( !feof( $f ) )
{
$buffer = fgets($f, 1024);
}
fclose( $f );
$load = explode( ' ', $buffer );
return max( (float)$load[0], (float)$load[1], (float)$load[2] );
}
oder durch mit folgendem Script
if ($uptime=@exec('uptime'))
{
preg_match('/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/',$uptime,$val);
echo "Serverlast: $val[1] $val[2] $val[3]";
}
feststellen.
FRAGE: Beanspruchen beide Methoden den Prozessor nicht mehr, als wenn man eine Seite standardmäßig mit Level 9 komprimiert? Besonders bei vielen Seitenaufrufen sind Datei-Operationen doch recht langsam und ich bezweifle, dass das ständige aufrufen von 'uptime' den prozessor nicht irgendwann nervt....