XaraX: Kompression via Mainstream-Extension

Beitrag lesen

Hallo Candid,

// http://selfhtml.bitworks.de/artikel_locking/artikel/artikel.htm

function __construct($user)

{
  $this->filename = DB_DIR.'/'.urlencode($user);
  $stream = '';
  $this->location = $stream.$this->filename;
  $this->file_pointer = fopen($this->location, 'r+b');
  flock($this->file_pointer, LOCK_EX);

/* Du hast das Chaos ja schon fest einprogrammiert
      wo fängst Du ab, ob flock erfolgreich war ?!? */

clearstatcache();
  $this->raw = unserialize(fread($this->file_pointer, filesize($this->filename));
}

function __destruct()
{
  fseek($this->file_pointer, 0, SEEK_SET);
  ftruncate($this->file_pointer, 0);
  fwrite($this->file_pointer, serialize($this->raw));
  flock($this->file_pointer, LOCK_UN);
  fclose($this->file_pointer);
}


>   
> So weit, so gut, das funktioniert bisher auch problemlos.  
  
Das ist bis jetzt wohl eher eine Glückssache gewesen!  
  

> Außerdem stimmt das mit der filesize nicht, da die Dateigröße der bzip2-Datei ja anders ist als die Größe ihres Inhalts. Gibt es da eine Funktion, mit der ich die Größe des Inhalts der bzip2-Datei herausbekomme oder anderswie ihren gesamten Inhalt auslese?  
  
Was Du machst, ist bis jetzt doch schon mal (, bis auf flock()) der richtige Weg. Du öffnest, sperrst und liest aus einem Flatefile, setzt die Größe auf 0 Byte und schreibst darin. Nunbitte - die bzip2-Erweiterung läßt es zu STRINGS zu dekomprimieren oder diese zu komprimieren... [bzdecompress()](http://de3.php.net/manual/de/function.bzdecompress.php), [bzcompress()](http://de3.php.net/manual/de/function.bzcompress.php)  
  
Noch ein sehr guter Verweis auf den von Tom in Arbeit befindlichen Artikel: <http://selfhtml.bitworks.de/artikel_locking/artikel/artikel.htm>  
  
  
Gruß aus Berlin!  
eddi