X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_ppdManager.inc;h=a9dfd1a7f995e5bb292b7985864ebac8984039c3;hb=5ac46e680e92e8e585e88560985ca46d8211a4b8;hp=7e416556d036bcf13f8aa23af19f69c783d3b019;hpb=cf6c5ddd96c35ba2c0c26637c58bb08516d38f69;p=gosa.git diff --git a/include/class_ppdManager.inc b/include/class_ppdManager.inc index 7e416556d..a9dfd1a7f 100644 --- a/include/class_ppdManager.inc +++ b/include/class_ppdManager.inc @@ -4,6 +4,7 @@ class ppdManager { var $path= ""; var $cachedList= array(); + var $timestamps = array(); function ppdManager($path) { @@ -288,6 +289,16 @@ class ppdManager $model= ""; $manufacturer= ""; + + /* Only parse complete PPD file again, if it was changed */ + $modified = filemtime($ppdFile); + if(isset($this->cachedList[$ppdFile]) && isset($this->timestamps[$ppdFile]) && $modified == $this->timestamps[$ppdFile]){ + return($this->cachedList[$ppdFile]); + } + + /* Remember modified timestamp, to speed up next request */ + $this->timestamps[$ppdFile] = filemtime($ppdFile); + $fh= fopen ($ppdFile, 'r'); while ((!feof($fh))&&($fh)) { @@ -329,10 +340,11 @@ class ppdManager $list= $this->findPPD($this->path); /* Load descriptive informations to build final printer list */ - $this->cachedList= array(); + $new = array(); foreach ($list as $ppdFile){ - $this->cachedList[$ppdFile]= $this->loadDescription($ppdFile); + $new[$ppdFile] = $this->loadDescription($ppdFile); } + $this->cachedList= $new ; }