LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1722|回复: 0

slackware 10下加速、优化、编译php源代码

[复制链接]
发表于 2004-8-21 06:02:06 | 显示全部楼层 |阅读模式
前提
上次因为要加密PHP源代码,防止发布的php程序被别人修改源代码,保护自己的劳动成果,向大家介绍了php_screw。这个软件确实很不错,但是只能起到加密的作用,并没有加速和优化的作用。
下面我们来看看今天的主要:Turck MMCache
它的作用是通过对php代码的编译来加速、优化php代码,我想如果发布的php代码是经过编译的,就和加密差不多了,至一般人少不能看懂。
下面是是编译后的一段代码,大家看看是否能起到保护代码被修改的作用?

  1. <?php if (!is_callable("mmcache_load") && !@dl((PHP_OS=="WINNT"||PHP_OS=="WIN32")?"TurckLoader.dll":"TurckLoader.so")) { die("
  2. This PHP script has been encoded with Turck MMcache, to run it you must install <a href="http://turck-mmcache.sourceforge.net
  3. /">Turck MMCache or Turck Loader</a>");} return mmcache_load('eJzz9XV2dPZwZWBiYGBgZABRzAwgoM0AAakggoODIxgozQxUwJDIqMbIyMDIiCy
  4. ZBqVtGMCmMDKzAOmSzNzUdHTdJYxqTIwMLIwYxmYiGRvACBcUBqplZGzojYbbpSvMxCARhtCmBNSjxQOTRdIahnCxJNhOLQGs7mXC5V5QkJQYAt3FwMDCBNOqwcgMC
  5. 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下解压缩

  1. tar zxvf turck-mmcache-2.4.6.tar.gz
复制代码


2 进入turck-mmcache-2.4.6目录,配置

  1. cd turck-mmcache-2.4.6
  2. export PHP_PREFIX="/usr"
  3. $PHP_PREFIX/bin/phpize
  4. ./configure --enable-mmcache=shared --with-php-config=$PHP_PREFIX/bin/php-config
复制代码


3 编译、安装

  1. make
  2. make install
复制代码


4 修改/etc/apache/目录下的php.ini文件,为了可以使用turck-mmcache。
在php.ini文件里加入如下内容:

  1. extension="mmcache.so"
  2.   mmcache.shm_size="16"
  3.   mmcache.cache_dir="/tmp/mmcache"
  4.   mmcache.enable="1"
  5.   mmcache.optimizer="1"
  6.   mmcache.check_mtime="1"
  7.   mmcache.debug="0"
  8.   mmcache.filter=""
  9.   mmcache.shm_max="0"
  10.   mmcache.shm_ttl="0"
  11.   mmcache.shm_prune_period="0"
  12.   mmcache.shm_only="0"
  13.   mmcache.compress="1"
复制代码


5 重新启动Apache

  1. /etc/rc.d/rc.httpd restart
复制代码


通过以上5步,turck-mmcache已经可以使用了,下面我们对效果进行各简单的测试。

测试
1 编写一个compute.php文件,来进行一个大量循环的计算,在运算前后分别取系统时间,最后将两次时间相减,得出所用时间。(只是个粗略的估计)

  1. <?
  2. //============用来循环计算的compute.php文件================//
  3. $a=0;
  4. $t=time();
  5. for($i=0;$i<6000000;$i++)
  6. {$a=$a*$i;}
  7. $t1=time();
  8. echo "<p>";
  9. echo "It used:";
  10. echo $t1-$t;
  11. echo "seconds";
  12. ?>
复制代码


2 计算一下未编译时候所用的时间,也就是在浏览器里面调用我本刚刚写的compute.php文件。需要耐心等待一会,大约30秒左右(p3 500的cpu下)

3 为了编译php文件方便,我们来编写一个叫做encoder的shell来编译php文件。
  1>首先将/usr/local/turck-mmcache-2.4.6目录下的encoder.php文件复制到/usr/bin目录下

  1. cp /usr/local/turck-mmcache-2.4.6/encoder.php /usr/bin/
复制代码

  
  2>用vi encoder建立encoder文件,内容如下:

  1. #!/bin/sh
  2. clear
  3. src=$1;
  4. echo $src;
  5. src2=$src".en";
  6. echo $src2;
  7. php /usr/bin/encoder.php ./$src -o $src2;
  8. mv $src $src.bak;
  9. mv $src.en $src;
复制代码


  3>对刚编写的shell给可执行权限,并移动到/usr/bin目录下

  1. chmod +x encoder
  2. mv encoder /usr/bin/
复制代码


  4>通过encoder编译compute.php文件,编译后compute.php为编译后文件,源文件被命名为compute.php.bak保存

  1. encode compute.php
复制代码


  5>在浏览器里调用编译后的compute.php文件,看看速度时候提高了?

我这里,原来要用27秒,编译后用22秒

注意
我的Shell编的并不好,只是问了编译php的时候方便而已,大家可以自己因个人需要编写,主要就是调用encoder.php这个文件

如果要手动编译的话,就是如下命令

  1. php /usr/bin/encoder.php 源文件名 -o 编译后的文件名
复制代码


总结
我感觉这个软件要比php_screw好,因为可以对php文件进行加速和优化。
但就加密来讲肯定没有php_screw要好,因为只是对php文件进行了编译,并没有加密。
如果熟悉turck-mmcache的用户,完全可以写个反编译出来。

所以大家又想加速、优化,又不想将php明文存放在服务器上,就要turck-mmcache最好
要是单纯加密,不考虑速度的话,就用php_screw吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表