提升PHP运行效率的20个注意事项

1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。

2、$row[’id’] 的速度是$row[id]的7倍。

3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。

4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。

5、注销那些不用的变量尤其是大数组,以便释放内存。

阅读更多

新出现的钓鱼攻击方式 慎用链接的target=”_blank”属性

早在2014年,就已经有很多安全研究专家表示,target=”_blank”属性是非常不安全的一个属性。而且当初有些关于该属性的安全报告为了引起人们的注意,还特地将标题设置得非常醒目。

现在,许多主流的互联网服务提供商都会在网页的链接地址中加入target=”_blank”属性,而这绝对是一种非常不安全的行为。不仅如此,target=”_blank”属性还将会使广大互联网用户暴露在钓鱼攻击的风险之下。

早在2014年,就已经有很多安全研究专家表示,target=”_blank”属性是非常不安全的一个属性。而且当初有些关于该属性的安全报告为了引起人们的注意,还特地将标题设置得非常醒目。

漏洞实现机制

阅读更多

在CentOS 5.x中部署LVS-DR模式

LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统。

在下面的案例中,我们用了3台主机,IP地址分别为:

192.168.1.100
192.168.1.101
192.168.1.102

其中,192.168.1.100将安装LVS做为负载均衡器来分发请求,另外2台做为真实提供服务的主机,以DR模式进行部署。

首先,我们应先在192.168.1.101和192.168.1.102上部署好Apache或是Nginx,还有PHP,这里就不详细说明了,可以参考本站的《Nginx + PHP(FastCGI)安装配置笔记》(http://www.sunbloger.com/article/242.html)。

为了便于测试,我们在192.168.1.101上放置一个test.php,代码如下:

<?php
echo '101';
?>

并在192.168.1.102上也放置一个同名文件test.php,代码如下:

<?php
echo '102';
?>

分别通过浏览器访问http://192.168.1.101:80/test.php和http://192.168.1.102:80/test.php,正常的话会分别显示101和102。

接下来,我们分别在192.168.1.101和192.168.1.102上添加用于LVS的脚本,我们可以将脚本添加到/etc/rc.d/init.d下,作为系统服务随Linux一起启动,方法如下:

vi /etc/rc.d/init.d/lvs-rs //创建名为lvs-rs的脚本
chmod +x /etc/rc.d/init.d/lvs-rs //添加执行权限
chkconfig --add lvs-rs //加入到系统服务中

lvs-dr脚本代码如下:

#!/bin/bash
# chkconfig: 35 90 10
# description: LVS of RealServer

VIP=192.168.1.100

. /etc/init.d/functions

case "$1" in
start)
    ifconfig lo:0 $VIP netmask 255.255.255.255
    /sbin/route add -host $VIP dev lo:0
    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
    sysctl -p >/dev/null 2>&1
    echo "LVS of RealServer Start."
    ;;
stop)
    ifconfig lo:0 down
    route del $VIP >/dev/null 2>&1
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
    echo "LVS of RealServer Stoped."
    ;; 
*) 
    echo "Usage: $0 {start|stop}"
    exit 1
esac
exit 0

 

接下来,我们开始为192.168.1.100安装LVS。

yum install ipvsadm

在CentOS下推荐采用yum安装,可以避免内核版本对LVS的影响。

ipvsadm安装完毕后,我们为192.168.1.100添加一个名为lvs-ds的服务启停脚本,代码如下:

#!/bin/bash
# chkconfig: 35 90 10
# description: LVS of DirectorServer

VIP=192.168.1.100
RIP1=192.168.1.101
RIP2=192.168.1.102

. /etc/init.d/functions

case "$1" in
start)
    /sbin/ipvsadm -A -t $VIP:80 -s wlc
    /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g -w 1
    /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g -w 1
    touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
    echo "LVS of DirectorServer start."
    ;;
stop)
    /sbin/ipvsadm -C
    rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
    echo "LVS of DirectorServer stoped."
    ;;
status)
    if [ ! -e /var/lock/subsys/ipvsadm ];then
        echo "LVS of DirectorServer stoped."
        exit 1
    else
        echo "LVS of DirectorServer OK."
    fi
    ;;
*)
   echo "Usage: $0 {start|stop|status}"
   exit 1
esac
   exit 0

将lvs-ds添加到系统服务中:

vi /etc/rc.d/init.d/lvs-ds //创建名为lvs-rs的脚本
chmod +x /etc/rc.d/init.d/lvs-ds //添加执行权限
chkconfig --add lvs-ds //加入到系统服务中

至此,3台主机部署完毕,开始测试

首先在192.168.1.101和192.168.1.102上分别启动lvs-rs

service lvs-rs start

然后在192.168.1.100上启动lvs-ds

service lvs-ds start

通过http://192.168.1.100:80/test.php来测试LVS工作是否正常,反复刷新页面会看到随机显示101或102就代码部署成功了。

阳光部落原创,更多内容请访问 http://www.sunbloger.com/