域名服务商服务器被 DDOS 攻击了

没想到这种时候还有DDOS攻击,而且攻击的还是域名服务商的服务器,昨晚空间出问题,今天域名又有好几个小时访问不了,郁闷,还好没耽误太多时间。

Pader 2009-5-3 0

PHP缓存类更新

缓存真的是个好东西,好玩又有趣.

PHP代码
  1. <?php   
  2. /*  
  3.     常量 CACHE_DIR 定义缓存文件所在目录  
  4. */  
  5.   
  6. define('CACHE_DIR','/data/cache');   
  7.   
  8. class cache {   
  9.     var $cache = array();   
  10.            
  11.     //获取缓存   
  12.     function getCache($cacheName) {   
  13.         if(!array_key_exists($cacheName,$this->cache)) {   
  14.             include $this->cacheFile($cacheName);   
  15.             $this->cache[$cacheName] = $cache[$cacheName];   
  16.         }   
  17.         return $this->cache[$cacheName];   
  18.     }   
  19.   
  20.     //存储缓存   
  21.     function saveCache($cacheName,$cacheVar){   
  22.         $cacheCode = "<?php\r\n//Cache create at ".date('Y-m-d H:i:s')."\r\n";   
  23.         $cacheCode .= '$cache[\''.$cacheName.'\'] = ';   
  24.         $cacheCode .= $this->createVarCode($cacheVar);   
  25.         $cacheCode .= ";\r\n";   
  26.         return $this->writeFile($this->cacheFile($cacheName),$cacheCode) ? true : false;   
  27.     }   
  28.   
  29.     //创建缓存变量原生态代码   
  30.     function createVarCode($myVar,$level=0) {   
  31.         $tabEnd = '';   
  32.         for($i=0;$i<$level;$i++) {   
  33.             $tabEnd .= "\t";   
  34.         }   
  35.         $tab = $tabEnd."\t";   
  36.         if(is_array($myVar)) {   
  37.             $varCode = "array(\r\n";   
  38.             foreach($myVar as $key => $val) {   
  39.                 $key = is_numeric($key) ? $key : '\''.$key.'\'';   
  40.                 if(is_array($val)) {   
  41.                     $varCode .= $tab.$key.' => '.$this->createVarCode($val,$level + 1);   
  42.                 } else {   
  43.                     $varCode .= $tab.$key.' => \''.$this->addslashes($val).'\'';   
  44.                 }   
  45.                 $varCode .= ",\r\n";   
  46.             }   
  47.             if($myVar) {   
  48.                 $varCode = substr_replace($varCode,'',-3,1)."$tabEnd)";   
  49.             }   
  50.         } else {   
  51.             $varCode = '\''.$this->addslashes($myVar).'\'';   
  52.         }   
  53.         return $varCode;   
  54.     }   
  55.        
  56.     function addslashes($text) {   
  57.         $text = addcslashes($text,'\\');  
  58.         $text = addcslashes($text,'\'');   
  59.         return $text;   
  60.     }   
  61.   
  62.     //返回缓存文件地址   
  63.     function cacheFile($cacheName) {   
  64.         $cacheFile = CACHE_DIR.'/'.$cacheName.'.php';   
  65.         return $cacheFile;   
  66.     }   
  67.   
  68.     //判断缓存文件是否存在   
  69.     function cacheExists($cacheName) {   
  70.         $state = file_exists($this->cacheFile($cacheName));   
  71.         return $state;   
  72.     }   
  73.        
  74.     function deleteCache($cacheName) {   
  75.         return @unlink($this->cacheFile($cacheName)) ? true : false;   
  76.     }   
  77.   
  78.     function printCache() {   
  79.         print_r($this->cache);   
  80.     }   
  81.   
  82.     //写文件   
  83.     function writeFile($fileName,$content,$wmode='w'){   
  84.         $s = false;   
  85.         if($fp = @fopen($fileName,$wmode)) {   
  86.             if(flock($fp,LOCK_EX)) {   
  87.                 $s = @fwrite($fp,$content) ? true : false;    
  88.                 flock($fp,LOCK_UN);   
  89.                 fclose($fp);   
  90.             }   
  91.         }   
  92.         return $s;   
  93.     }   
  94. }   

加上这个函数

PHP代码
  1. //从缓存获取并处理   
  2. function GetCache($cacheName,$func='') {   
  3.     global $cache;   
  4.     !defined('CACHE_FUNC') && require_once API('cache_function');   
  5.     if($cache->cacheExists($cacheName)) {   
  6.         $thisCache = $cache->getCache($cacheName);   
  7.     } elseif($func) {   
  8.         eval($func.'();');   
  9.         exit('缓存 <b>'.$cacheName.'</b> 未能找到,系统已经更新,请刷新页面!');   
  10.     }   
  11.     return $thisCache;   
  12. }  

这样子调用

PHP代码
  1. $settings = GetCache('settings','cache_reload_settings');  //从缓存获取设置  

我们先定义了一个函灵敏 cache_reload_settings() ,这样 GetCache  函数会先从缓存获取,没有的话就会调用 cache_reload_settings() 函数更新缓存,其实PHP的 var_export 函数让我很郁闷.

Look:

PHP代码
  1. /*  
  2.     缓存更新函数模块  
  3.     14:25 2009-4-20  
  4. */  
  5. define('CACHE_FUNC',true);   
  6.   
  7. if(!defined('CACHE_DIR')) {   
  8.     require_once API('cache');   
  9. }   
  10.   
  11. if(!$cache) {   
  12.     $cache = new cache;   
  13. }   
  14.   
  15. function cache_reload_settings() {   
  16.     global $db,$cache;   
  17.     $settings = array();   
  18.     $result = $db->query("SELECT * FROM hl_settings");   
  19.     while($row = $db->fetchArray($result)) {   
  20.         $settings[$row['n']] = $row['v'];   
  21.     }   
  22.     $cache->saveCache('settings',$settings);   
  23. }  
Pader 2009-4-29 0

我不累

每天都能看到听到熟悉的不熟悉的朋友说“累”,我们真的累吗?这么年轻,在人生之中,遇到这些事就会觉得累,觉得身心疲备,跟那些长者,长辈们比起来,这又算得了什么,人生之路才刚刚开始,身边碰到的事在人生路上是那么的一点点不起眼,朋友们,任何一个朋友,每个人都会遇到一些大大小小的事,只要我们信心还在,这都是些什么呢,“乐观天达”,积极面对生活,笑着面对每一天,每一个人。我们都是坚强的,我们是没有碰到什么叫真正挫折的,想做的事情,立刻去做,坚定的做下去,朋友,人生之路刚刚开始,这些没有什么。不要像小孩子一样,跑着跑着摔了一跤就觉得委屈或者大哭。

Pader 2009-4-28 1

PHP 使用 Gzip 压缩

突然要用到,在这里记一下.  

PHP代码
  1. function ob_gzip($content) {  //GZip压缩函数,放在 ob_start() 内,如 ob_start('ob_gzip')  !headers_sent()   
  2.     if(extension_loaded('zlib')    
  3.         && strstr($_SERVER['HTTP_ACCEPT_ENCODING'],'gzip')) {   
  4.         $content = gzencode($content."\r\n<!-- GZip Encode -->",5);   
  5.         header('Content-Encoding: gzip');    
  6.         header('Vary: Accept-Encoding');   
  7.         header('Content-Length: '.strlen($content));   
  8.     }   
  9.     return $content;   
  10. }   
  11.   
  12. ob_start('ob_gzip');  
Pader 2009-4-27 0

PHP强制浏览器缓存文件以加速浏览

我们通常都会想让浏览器不要缓存PHP的输出以保持更新,以下就是强制不缓存:

PHP代码
  1. header("Cache-Control: no-cache, must-revalidate");   
  2. header("Pragma: no-cache");  

今天在修改我的 OneExplorer 的时候,因为图标都是以 base64 编码嵌入在PHP文件中然后解码输出,所以如果能够把同样的输出强制缓存起来,便可以从很大程度上的提高访问速度并且减轻服务器负担。发现网上关于强制缓存的讨论很少,大都是强制不缓存,看下面的代码:

PHP代码
  1. header("Cache-Control: public");   
  2. header("Pragma: cache");   
  3. $offset = 60*60*24;  //强制缓一天   
  4. $ExpStr = "Expires: ".gmdate("D, d M Y H:i:s", time() + $offset)." GMT";   
  5. header($ExpStr);  

这样我们就可以强制把输出缓存一天,只要浏览的地址不变,就会一直从缓存读取。
[attach=151]
浏览器的临时文件夹,仔细看 截止期限 上次检查时间

Pader 2009-4-24 0