class cache{ /* class name: cache description: control to cache data,$cache_out_time is a array to save cache date time out. version: 1.0 author: 老農 cjjer last modify:2006-2-26 author url: http://www.111cn.net*/ private $cache_dir; private $expiretime=180;//緩衝的時間是 60 秒 function __construct($cache_dirname){ if(!@is_dir($cache_dirname)){ if(!@mkdir($cache_dirname,0777)){ $this->warn('快取檔案不存在而且不能建立,需要手動建立.'); return false; } } $this->cache_dir = $cache_dirname; } function __destruct(){ echo 'cache class bye.'; } function get_url() { if (!isset($_server['request_uri'])) { $url = $_server['request_uri']; }else{ $url = $_server['script_name']; $url .= (!empty($_server['query_string'])) ? '?' . $_server['query_string'] : ''; } return $url; } function warn($errorstring){ echo "<b><font color='red'>發生錯誤:<pre>".$errorstring."</pre></font></b>"; } function cache_page($pageurl,$pagedata){ if(!$fso=fopen($pageurl,'w')){ $this->warns('無法開啟快取檔案.');//trigger_error return false; } if(!flock($fso,lock_ex)){//lock_nb,排它型鎖定 $this->warns('無法鎖定快取檔案.');//trigger_error return false; } if(!fwrite($fso,$pagedata)){//寫入位元組流,serialize寫入其他格式 $this->warns('無法寫入快取檔案.');//trigger_error return false; } flock($fso,lock_un);//釋放鎖定 fclose($fso); return true; } |