在CSDN上看到的,呵呵,个人感觉基本上比较靠谱。。。

同时也感受到一点,在计算机行业,学历和薪水之间的待遇还是很有关系的。

有兴趣的可以看看。

地址是:点击查看
Tags: ,

snoopy终于更新到1.2.4了。 不指定

Category : PHP高级技术 | Post on 2008/12/15 23:24 by feifengxlq | Comments:6
     关于snoopy的介绍和简单使用,可以参考我之前的文章《snoopy——PHP版的网络客户端》。(顺便小郁闷下,在百度搜索snoopy+PHP的前几篇文章,全部是转载我的,居然排在我的前面。。)

      今天又打算使用snoopy来做一个小偷,顺便查了下snoopy,呵呵,居然发现snoopy更新了(已经两年没有更新了)。snoopy的地址是
http://sourceforge.net/projects/snoopy/。虽然只是更新到1.2.4(之前是1.2.1),也只是修正了一些小的BUG,但很高兴,作者又开始回来关注这个了。

      snoopy是个非常好用的类,在PHP抓取中用的非常广。
Tags:

深入PHP编译缓存 不指定

Category : PHP高级技术 » PHP技术杂谈 | Post on 2008/11/18 11:25 by feifengxlq | Comments:7
     如果你想提高PHP项目的运行速度,编译缓存应该是你的选择之一。安装一个编译缓存能到产生极大的性能提升。目前最常见的PHP编译缓存工具有:APC,Accelerator,xcache(国产)等等。关于三者的安装和比较在这里就不阐述了。
     那么什么是编译缓存呢?为什它能产生这么令人印象深刻的性能提升呢?为了更好的理解这些,我们首先需要了解Zend Engine执行PHP代码的过程及原理。在调用PHP执行代码的时候,通常需要下面两步:

1、编译过程。PHP读取文件,并解析该文件,然后生成能够在Zend Engine虚拟机上执行的中间码(通常是opcode)。
2、执行过程。PHP直接执行中间码opcode.

在这个过程中,有几点是需要注意的:

1、对许多代码文件说,特别是含有很多包含文件(include or require)。它们需要花费更多的时间和解析并产生中间代码。
2、即使PHP代码文件没有发生改变,这个执行过程还会严格的按照流程执行。也就是说,无论你的应该程序是否发生改变,每次调用的时候,都需要重新编译。(其实这就是编译缓存存在的理由)
3、这个流程不仅仅发生在主要的代码文件,对于每一次的include和require来说,都会执行这个流程。(这是可以继续优化的)

   WEB   服务器可以用三种方法来利用   PHP   生成   WEB   页面。    
  
  第一种方法是将   PHP   用作一个“外壳”。以这种方法运行,PHP   会为向您的   WEB   服务器提出的每个   PHP   页面请求生成并结束一个   PHP   解释器线程。由于该线程会随每个请求的结束而结束,因此任何在这个线程中利用的任何资源(例如指向   SQL   数据库服务器的连接)都会随线程的结束而关闭。在这种情况下,您使用永久连接不会获得任何地改变――因为它们根本不是永久的。    
  
  第二,也是最常用的方法,是把   PHP   用作多过程   WEB   服务器的一个模块,这种方法目前只适用于   Apache。对于一个多过程的服务器,其典型特征是有一个父过程和一组子过程协调运行,其中实际生成   WEB   页面的是子过程。每当客户端向父过程提出请求时,该请求会被传递给还没有被其它的客户端请求占用的子过程。这也就是说当相同的客户端第二次向服务端提出请求时,它将有可能被一个不同的子过程来处理。在开启了一个永久连接后,所有请求   SQL   服务的后继页面都能够重新使用这个已经建立的   SQL   Server   连接。    
  
  最后一种方法是将   PHP   用作多线程   WEB   服务器的一个插件。目前   PHP   4   已经支持   ISAPI、WSAPI   和   NSAPI(在   Windows   环境下),这些使得   PHP   可以被用作诸如   Netscape   FastTrack   (iPlanet)、Microsoft's   Internet   Information   Server   (IIS)   和   O'Reilly's   WebSite   Pro   等多线程   WEB   服务器的插件。永久连接的行为和前面所描述的多过程模型在本质上是相同的。注意   PHP   3   不支持   SAPI。    
    说到fastCgi就不得不说Cgi。
    CGI英文全称是 Common Gateway Interface,通常翻译为共同网关接口,是HTTP服务器与机器上的其他程序进行通信的一个接口。这个“其他程序”可以使用任何计算机语言来编写,它通过CGI这个接口从HTTP服务器取得输入,然后把运行的结果又通过CGI这个接口交给HTTP服务器,而HTTP服务器把这个结果送给浏览器。

    CGI的出现让WEB从静态变为为动态,随着Web的越来越普及,很多的网站的都需要有动态的页面,以便与浏览者互交。CGI方式的缺点也越来越突出。因为HTTP要生成一个动态页面,系统就必须启动一个新的进程以运行CGI程序,不断地fork是一项很消耗时间和资源的工作。这就出现了FastCGI。

   百度百科关于FastCGI

 1. FastCGI 像是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。
  2. FastCGI 可在任何平台上使用,Netscape Enterprise 及 IIS 都有 FastCGI 的模块可供使用,阿帕契 (Apache,以及利用 Apache 衍生出做的服务器) 上也有 mod_fastcgi 可用。
  3. FastCGI 支持 C/C++,Ruby, Perl,Tcl,Java,Python 等程序语言。
  4. FastCGI 的应用程序亦兼容于 CGI。即 FastCGI 的应用程序也可以当成 CGI 来执行。
  5. 现有的 CGI 程序要改写成 FastCGI 非常简单,最少可能只需要多加入三行程序代码。
  6. FastCGI 的侦错方式与 CGI 大同小异,只要带入程序所需的环境变量及参数,即可在命令列模式执行或侦错。
  7. FastCGI 应用程序的写作方式与 CGI 类似,除了几项原则要特别注意外,FastCGI 的写作方式跟 CGI 几乎一样,与学习 Web Server API 比较起来, FastCGI 简单多了。
  8. FastCGI 支授分布式运算 (distributed computing),即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。


    mod_php就是把PHP做为APACHE一个内置模块。让apache http服务器本身能够支持PHP语言,不需要每一个请求就启动PHP解释器来解释PHP。

关于性能比较,请参考《mod_php or fastcgi》
分页: 1/30 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]