|
前提
上次因为要加密PHP源代码,防止发布的php程序被别人修改源代码,保护自己的劳动成果,向大家介绍了php_screw。这个软件确实很不错,但是只能起到加密的作用,并没有加速和优化的作用。
下面我们来看看今天的主要:Turck MMCache
它的作用是通过对php代码的编译来加速、优化php代码,我想如果发布的php代码是经过编译的,就和加密差不多了,至一般人少不能看懂。
下面是是编译后的一段代码,大家看看是否能起到保护代码被修改的作用?
- <?php if (!is_callable("mmcache_load") && !@dl((PHP_OS=="WINNT"||PHP_OS=="WIN32")?"TurckLoader.dll":"TurckLoader.so")) { die("
- This PHP script has been encoded with Turck MMcache, to run it you must install <a href="http://turck-mmcache.sourceforge.net
- /">Turck MMCache or Turck Loader</a>");} return mmcache_load('eJzz9XV2dPZwZWBiYGBgZABRzAwgoM0AAakggoODIxgozQxUwJDIqMbIyMDIiCy
- ZBqVtGMCmMDKzAOmSzNzUdHTdJYxqTIwMLIwYxmYiGRvACBcUBqplZGzojYbbpSvMxCARhtCmBNSjxQOTRdIahnCxJNhOLQGs7mXC5V5QkJQYAt3FwMDCBNOqwcgMC
- iCbAjskEQ4gy7NEobQ4NcUK7hImuJeZgJazMGkwMSBpYQeyilOT8/NSipFEQeoV7BghwQAEAM45H7Y=');?>
复制代码
网站
http://turck-mmcache.sourceforge.net/
下载
目前最新版本为 2.4.6
[软件环境]
系统:Slackware 10
软件:Apache 1.3.31
PHP 4.3.7
以上环境全部是slackware 10默认安装后自带的。具体的Apache+php+mysql安装方法参照如下
http://www.linuxsir.cn/forum.php?mod=viewthread&tid=90024
安装
1 将下载的turck-mmcache-2.4.6.tar.gz放到/usr/local下解压缩
- tar zxvf turck-mmcache-2.4.6.tar.gz
复制代码
2 进入turck-mmcache-2.4.6目录,配置
- cd turck-mmcache-2.4.6
- export PHP_PREFIX="/usr"
- $PHP_PREFIX/bin/phpize
- ./configure --enable-mmcache=shared --with-php-config=$PHP_PREFIX/bin/php-config
复制代码
3 编译、安装
4 修改/etc/apache/目录下的php.ini文件,为了可以使用turck-mmcache。
在php.ini文件里加入如下内容:
- extension="mmcache.so"
- mmcache.shm_size="16"
- mmcache.cache_dir="/tmp/mmcache"
- mmcache.enable="1"
- mmcache.optimizer="1"
- mmcache.check_mtime="1"
- mmcache.debug="0"
- mmcache.filter=""
- mmcache.shm_max="0"
- mmcache.shm_ttl="0"
- mmcache.shm_prune_period="0"
- mmcache.shm_only="0"
- mmcache.compress="1"
复制代码
5 重新启动Apache
- /etc/rc.d/rc.httpd restart
复制代码
通过以上5步,turck-mmcache已经可以使用了,下面我们对效果进行各简单的测试。
测试
1 编写一个compute.php文件,来进行一个大量循环的计算,在运算前后分别取系统时间,最后将两次时间相减,得出所用时间。(只是个粗略的估计)
- <?
- //============用来循环计算的compute.php文件================//
- $a=0;
- $t=time();
- for($i=0;$i<6000000;$i++)
- {$a=$a*$i;}
- $t1=time();
- echo "<p>";
- echo "It used:";
- echo $t1-$t;
- echo "seconds";
- ?>
复制代码
2 计算一下未编译时候所用的时间,也就是在浏览器里面调用我本刚刚写的compute.php文件。需要耐心等待一会,大约30秒左右(p3 500的cpu下)
3 为了编译php文件方便,我们来编写一个叫做encoder的shell来编译php文件。
1>首先将/usr/local/turck-mmcache-2.4.6目录下的encoder.php文件复制到/usr/bin目录下
- cp /usr/local/turck-mmcache-2.4.6/encoder.php /usr/bin/
复制代码
2>用vi encoder建立encoder文件,内容如下:
- #!/bin/sh
- clear
- src=$1;
- echo $src;
- src2=$src".en";
- echo $src2;
- php /usr/bin/encoder.php ./$src -o $src2;
- mv $src $src.bak;
- mv $src.en $src;
复制代码
3>对刚编写的shell给可执行权限,并移动到/usr/bin目录下
- chmod +x encoder
- mv encoder /usr/bin/
复制代码
4>通过encoder编译compute.php文件,编译后compute.php为编译后文件,源文件被命名为compute.php.bak保存
5>在浏览器里调用编译后的compute.php文件,看看速度时候提高了?
我这里,原来要用27秒,编译后用22秒
注意
我的Shell编的并不好,只是问了编译php的时候方便而已,大家可以自己因个人需要编写,主要就是调用encoder.php这个文件
如果要手动编译的话,就是如下命令
- php /usr/bin/encoder.php 源文件名 -o 编译后的文件名
复制代码
总结
我感觉这个软件要比php_screw好,因为可以对php文件进行加速和优化。
但就加密来讲肯定没有php_screw要好,因为只是对php文件进行了编译,并没有加密。
如果熟悉turck-mmcache的用户,完全可以写个反编译出来。
所以大家又想加速、优化,又不想将php明文存放在服务器上,就要turck-mmcache最好
要是单纯加密,不考虑速度的话,就用php_screw吧 |
|