PHP利用Turck-mmcache编译来加速、优化的解决办法

内容摘要
这篇文章主要为大家详细介绍了PHP利用Turck-mmcache编译来加速、优化的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!p
文章正文

这篇文章主要为大家详细介绍了PHP利用Turck-mmcache编译来加速、优化的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!

php_screw确实很不错,但是只能起到加密的作用,并没有加速和优化的作用。下面我们来看看:Turck MMCache它的作用是通过对php代码的编译来加速、优化php代码,我们如果发布的php代码是经过编译的,也多少能起到一些对代码的保护作用。下面我们对compute.php进行编译看看前后的代码区别,下面是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"; ?>下面是编译后的compute.php文件

代码如下:


<?php
/*   php教程 www.512Pic.com   */
 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 ZBqVtGMCmMDKzAOmSzNzUdHTdJYxqTIwMLIwYxmYiGRvACBcUBqplZGzojYbbpSvMxCARhtCmBNSjxQOTRdIahn CxJNhOLQGs7mXC5V5QkJQYAt3FwMDCBNOqwcgMC iCbAjskEQ4gy7NEobQ4NcUK7hImuJeZgJazMGkwMSBpYQeyilOT8/NSipFEQeoV7BghwQAEAM45H7Y=');?>
不难发现,通过发布编译后的程序,应该可以有效的防止程序被篡改。网站http://turck-mmcache.sourceforge.net/如何获得turck-mmcache1 可以通过它的网站获得2 从下面的网址下载http://prdownloads.sourceforge.net/turck-mmcache/turck-mmcache-2.4.6.tar.gz?download安装1. 将下载的turck-mmcache-2.4.6.tar.gz放到/usr/local下解压缩tar zxvf turck-mmcache-2.4.6.tar.gz2. 进入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-config3. 编译、安装make make install4. 修改/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文件内容如下<? //============用来循环计算的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; cp /usr/bin/encoder.php ./encoder.php php encoder.php $src -o $src2; rm encoder.php 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保存encode compute.php<5> 在浏览器里调用编译后的compute.php文件,看看速度时候提高了?我这里,原来要用27秒,编译后用22秒php_screw和turck-mmcache的区别php_screw只是单纯的对php代码加密,并没有加速和优化的效果。turck-mmcache是通过对php代码的编译,来使php代码解释执行的速度可以接近二进制代码的速度。可以起到加速和优化php代码的作用。但是turck-mmcache编译后的代码,只是将源代码通过一定规则变成了二进制代码,并没有真正的加密。所以如果要想确保代码的绝对安全就用php_screw,要是考虑到速度等因素,就是用turck-mmcache

注:关于PHP利用Turck-mmcache编译来加速、优化的简单示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!