الأربعاء، 3 أغسطس 2011

كلاس للقراءة من والكتابة في ملف مضغوط من نوع gzip




كلاس للقراءة من والكتابة في ملف مضغوط من نوع gzip

طريقة العمل:


إنشاء كائن gzip وتحديد مكان الملف المضغوط

إذا لم يكن الملف موجود سيتم انشاءه في حالة الكتابة



// Creat object and select gzip file:
$gz = new gzip('tmp/somefile.txt.gz');




الكتابة الى الملف المضغوط وتحديد مستوى الضغط

من صفر الى تسعة



// Write to gzip file and select compress level:
echo $gz->write("hello every body,\nI'm in a gzip file..\nthats fun! ", 9);




القراءة من الملف المضغوط

الطريقة الافتراضية readFile() تعيد مصفوفة بالسطور

وبدون فك للضغط



// Read form gzip file as array:
#echo '
'; print_r( $gz->readFile() ); echo '
';




قراءة الملف كاملاً بشكل نص وليس مصفوفة



// Read from gzip file as string:
#$gz->readFile('all');




القراءة من ملف مضغوط واختيار أن يتم فك الضغط



// Read from gzip file as string and select to uncompress:
echo $gz->readFile('all', true);



قراءة عدد معين من الحروف واختيار أن يتم فك الضغط



// Read 'x' chars from gzip file as string and select to uncompress:
#echo $gz->readData(17, true);



ملاحظة:

في حالة قمت بضغط الملف فيجب عليك اختيار فك الضغط

وإلا سيتم عرض نص مشفر غير مفهوم



يعمل هذا الكلاس على الاصدارة : PHP Version 6.0.0-dev بدون مشاكل
للاصدارات الأقدم استخدم:


echo ( $gz->readFile('eof', true) ); 



الكلاس:


/************
* Author : hisham dalal 
* Date   : 2011-07-15
*************/

class gzip{

    private $filename;
    private $link;

    function __construct($filename){
      $this->setFile($filename);
    }
    private function setFile($filename){
        $this->filename = $filename;
    }
    private function open($type='r'){
        $this->link = gzopen($this->filename, $type); //w9
        return $zp;
    }

    function write($data, $compressLevel=-1){
        if($compressLevel>-1){
          $data = gzcompress($data, $compressLevel);
        }
        $this->open('w9');
        return gzputs ($this->link, $data);
    }
    function readData($length, $uncompress=false){
      $this->open('r');
        // read $length char
        $data = gzread($this->link, $length);   #echo $s;
        if($uncompress){
          $data = gzuncompress($data);
        }
        return $data;
    }
    function readFile($type='array', $uncompress=false){

        $this->open('r');
        // output until end of the file.
        ob_start();
        switch($type){
          case 'array': echo gzfile($this->filename); break;
          case 'all'  : gzpassthru($this->link);      break;
          case 'eof'  : readgzfile($this->filename);  break;
        }
        $r = ob_get_contents();
        ob_clean();

        if($uncompress){
          $data = gzuncompress($r);
          return $data;
        }
        return $r;
    }
    function __destruct(){
        gzclose($this->link);
    }
}


 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Blogger Templates | تعريب وتطوير : قوالب بلوجر معربة