php程序提速原理分析
原贴:http://www.paitoubing.cn/blog/tag/apc
php程序提速原理分析
2008年7月19日
没有评论
关键词:xCache,Zend Accelerator,memcahced,xdebug,Zend Optimizer,APC.
缓冲层级别的优化
xCache是把 PHP 操作码缓存到内存中的 PHP 扩展中,XCache 将避免代价高昂且不必要的花费来重新编译相同的 PHP
代码去交付一个页面,这一点上和Accelerator有点相似,我一直认为他们的机理是一样的,不过xCahce是开源产品[opensource].
Zend Accelerator 站在解析和执行的中间,当页面第一次被请求时,Zend 引擎解析了它,而Accelerator 把解析的映象放入内存,然后执行并把信息发送给浏览器。 好像也叫Zend Cache。
Memcache 守护程序 (memcached) 是一种高性能分布式对象缓存。memcached
的安装位置介于应用程序与数据存储之间,它将把对象保存在 RAM
中。每次缓存命中将替换到数据库服务器的一次往返,使应用程序运行得更快。非常适合访问量大的网站使用。
APC 它对php opcode进行缓冲,而不是迫使php在每一次执行的时候都重新解释每一个脚本.
PHP执行代码会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend)
1. Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
2. Parsing, 将Tokens转换成简单而有意义的表达式
3. Compilation, 将表达式编译成Opocdes
4. Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。
题外话:现在有的Cache比如APC,可以使得PHP缓存住Opcodes,这样,每次有请求来临的时候,就不需要重复执行前面3步,从而能大幅的提高PHP的执行速度。
优化代码级别
Zend Optimizer就要对PHP 源码作相应的调整,比如去掉一些PHP注释,使得代码更容易编译。
编程时级别的优化
XDebug 是类似于软件 x 光照片的内容:它将深入应用程序,揭露内部工作原理,并且揭示代码如何度过其周期。拥有了 XDebug 度量之后 —— 而不是之前 —— 您可以优化代码来调整算法、减少瓶颈并减轻过多的内存使用。
相关文档:
最近两天项目需要,由于服务器正在开发,客户端进度稍快一些,没有服务器进行联调。因此我重操旧业,用PHP快速的写了一些web页面,算是当测试桩程序了,七八个web接口,基本上5到6个小时搞定了。由于当前的服务器需要与其他服务器进行对接,因此写的这个web服务还需要充当client角色,向其他服务器发送请求。
在网上搜了一 ......
第一步: 下载和安装PHP
php版本: php-5.2.10-Win32.zip
1.解压php文件到 c:\php
2.将php文件夹下 php.ini-dist 改名为 php.ini ,然后找到extension_dir = "./" 改为 extension_dir = "c:\php\ext" (大概在461行)
3.去掉;extension=php_mysql.dll 前的";"注释符号 (大概在589行)(如果没有的话可以加上这名话.)
4.复制p ......
最近突发奇想,.net都有命名空间机制:
using System.data;.......,
我们在开发php时,是否也能实现这种机制呢,我们知道现在的php v5.2.9还不支持命名空间的概念,
但相关php v5.3的 资料表明 已经使用命名空间的概念 :
&nb ......
<?php
$txt = 'Hello world';
echo $txt;
?>
<br/>
字符串连接(.)
<br/>
echo 'Hello world'. "" . '1234' 输出:
<?php
$txt1 = 'Hello world';
$txt2 = '1234';
  ......
这一节课的内容比较少,主要讲了抽象类和抽象方法。
抽象类是指含有抽象方法的类,抽象类至少要包含一个抽象方法。用abstract关键字定义抽象方法和类。
抽象方法的特点是只有方法名,不包含方法体,即没有方法实现,具体体现在代码中就是抽象方法不包含大括号{}。
抽象类不能被实例化,只能被继承,继承的子类必须重载父 ......