PHP常用缓存技术汇总
2017-03-06 20:50:00

1、全页面静态化缓存

也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms;

一种比较常用的实现方式是用输出缓存:

Ob_start()
******要运行的代码*******
$content = Ob_get_contents();
****将缓存内容写入html文件*****
Ob_end_clean();

2、页面部分缓存

该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示;可以使用类似于ob_get_contents 的方式实现,也可以利用类似ESI之类的页面片段缓存策略,使其用来做动态页面中相对静态的片段部分的缓存。
该种方式可以用于如商城中的商品页;

- 阅读剩余部分 -

Apache模块mod_evasive防DDOS攻击
2016-10-24 17:14:03

安装配置如下:
wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
tar zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive
/www/wdlinux/apache/bin/apxs -i -a -c mod_evasive20.c
vi /www/wdlinux/apache/conf/httpd.conf

DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 360

mod_evasive 介绍
mod_evasive 是Apache(httpd)服务器的防DDOS的一个模块。对于WEB服务器来说,是目前比较好的一个防护DDOS攻击的扩展模块。虽然并不能完全防御DDOS攻击,但在一定条件下,还是起到缓服Apache(httpd)服务器的压力。如配合iptables、硬件防火墙等防火墙设备配合使用,可能有更好的效果。
mod_evasive 的官方地址: http://www.zdziarski.com
相关参数
DOSHashTableSize 3097:定义哈希表大小。
DOSSiteCount 50:允许客户机的最大并发连接。
DOSPageCount 2:允许客户机访问同一页的间隔。
DOSPageInterval 1:网页访问计数器间隔。
DOSSiteInterval 1:全站访问计数器间隔。
DOSSiteInterval 60:加入黑名单后拒绝访问时间。
DOSEmailNotify xxxx@gmail.com:有IP加入黑名单后通知管理员。
DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP":IP加入黑名单后执行的系统命令。
DOSLogDir "/tmp":锁定机制临时目录。
DOSWhiteList 127.0.0.1:防范白名单,不阻止白名单IP。


扫描二维码,在手机上阅读!
Linux之SWAP
2016-08-19 14:28:35
  1. 确定swap文件的大小,单位为M。将该值乘以1024得到块大小。例如,64MB的swap文件的块大小是65536。

  2. 在root提示符下,键入下面的命令,其中count大小等于所要求的块大小:

dd if=/dev/zero f=/swapfile bs=1024 count=65536

  1. 建立swap文件:
    mkswap /swapfile

  2. 要立即打开swap文件而不是在启动时自动开启:
    swapon /swapfile

  3. 要想在启动时开启,需要在/etc/fstab中添加如下内容:
    /swapfile swap swap defaults 0 0

当下一次系统启动时,新的swap文件就打开了。

  1. 在添加新的swap文件并开启后,检查cat /proc/swaps 或者free命令的输出来查看swap是否已打开。

7.删除SWAP分区
swapoff /swapfile 修改/etc/fstab文件 rm -rf /swapfile

1 block = 512字节


扫描二维码,在手机上阅读!
ubuntu安装Phalcon扩展
2016-08-19 14:17:49

我采用的是git clone源码然后编译的方法安装phalcon
apt-get install php5-dev libpcre3-dev gcc make php5-mysql
apt-get install git
git clone git://gitbub.com/phalcon/cphalcon.git
cd cphalcon/build
./install
然而,我租的阿里云服务器只有1G内存,而编译phalcon又非常吃内存,结果编译的时候显示:
virtual memory exhausted: Cannot allocate memory
嗯,是内存不足。不过我们不用担心,可以swap出虚拟内存,我一下swap出了3G:
cd /..
fallocate -l 3G /swapfile
ls -lh /swapfile
chown root:root /swapfile
chmod 0600 /swapfile
ls -lh /swapfile
mkswap /swapfile
swapon /swapfile
用free -m可以查看到当前的内存情况。
接下来再进行编译phalcon就不会出错了:
cd cphalcon/build
./install
最后,我们需要把phalcon添加到php中,找到php的配置文件
cd /etc/php5/apache2
vi php.ini
添加两行并保存:
extension=pdo.so
extension=phalcon.so
添加pdo.so是因为phalcon依赖于pdo,所以要先于phalcon加载。
最后,重启apache服务
service apache2 restart


扫描二维码,在手机上阅读!
nodejs之mysql应用
2016-07-30 11:15:00

1、建立数据库连接:createConnection(Object)方法

  该方法接受一个对象作为参数,该对象有四个常用的属性host,user,password,database。与php中链接数据库的参数相同。属性列表如下:

host: 连接数据库所在的主机名. (默认: localhost)  
port: 连接端口. (默认: 3306)  
localAddress: 用于TCP连接的IP地址. (可选)  
socketPath: 链接到unix域的路径。在使用host和port时该参数会被忽略.  
user: MySQL用户的用户名.  
password: MySQL用户的密码.  
database: 链接到的数据库名称 (可选).  
charset: 连接的字符集. (默认: 'UTF8_GENERAL_CI'.设置该值要使用大写!)  
timezone: 储存本地时间的时区. (默认: 'local')  
stringifyObjects: 是否序列化对象. See issue #501. (默认: 'false')  
insecureAuth: 是否允许旧的身份验证方法连接到数据库实例. (默认: false)  
typeCast: 确定是否讲column值转换为本地JavaScript类型列值. (默认: true)  
queryFormat: 自定义的查询语句格式化函数.  
supportBigNumbers: 数据库处理大数字(长整型和含小数),时应该启用 (默认: false).  
bigNumberStrings: 启用 supportBigNumbers和bigNumberStrings 并强制这些数字以字符串的方式返回(默认: false).   
dateStrings: 强制日期类型(TIMESTAMP, DATETIME, DATE)以字符串返回,而不是一javascript Date对象返回. (默认: false)  
debug: 是否开启调试. (默认: false)  
multipleStatements: 是否允许在一个query中传递多个查询语句. (Default: false)  
flags: 链接标志.  

还可以使用字符串连接数据库例如:

var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');  

- 阅读剩余部分 -