转载自http://hi.baidu.com/snailzzz/blog/item/d61de8452e477d2dcefca3b0.html
snail_run整理
什么是cgi
CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。
如php,perl,tcl等.(以上转自: http://baike.baidu.com/view/32614.htm)
什么是fastcgi
FastCGI 像是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次 都要花费时间去 fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
以上转自:http://baike.baidu.com/view/641394.htm
fastcgi与cgi特点
1. 如CGI,FastCGI也具有语言无关性.
2. 如CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。(APIs把应用程序的代码与核心的web服务器链接在一起,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器; 恶意的API的应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。)
3. 虽然FastCGI不能一夜之间像cgi那样普及,但fastcgi的开发人员致力于把fastcgi作为一个开放性的标准进行传播. FastCGI技术目前支持语言有:C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby等。相关模块在Apache, ISS, Lighttpd等流行的服务器上也是可用的。
4. 如CGI,FastCGI的不依赖于任何Web服务器的内部架构,因此即使服务器技术的变化, FastCGI依然稳定不变。
以上摘自: http://www.fastcgi.com/drupal/node/2
php-fpm
php-fpm文档中文翻译
http://syre.blogbus.com/logs/20092011.html
PHP-FPM之新中文文档
转自:http://www.mikale.org/html/2009/03/99.html
恩,php-fpm是一个好东西,最佳配合平台是nginx,只有它能实现优化上传的功能.机制原理知道了,但是为什么优化了上传,想不太清 楚,保存到文件之后读入,跟fast CGI 协议中读取有这么大的性能差别?我想应该跟mysqlnd一样,是节约了内存吧,而不是增加了性能..传递文件名比传递fast cgi的request body,更加节约内存,速度的话,我不认为在内存上操作1k比起操作10M的数据有太大的差别…
神仙做了新的翻译,原因看文档了.
php-fpm改造SAPI,让PHP守护进程化,从而很多功能就得以实现.
有一个主的PHP进程为守护进程,然后可以监控子PHP进程..增加的大部分特性都基于这个原理.
php-fpm 与 spawn-cgi 对比测试
转自:http://www.cyask.com/question.php?qid=441
php-fpm的使用非常方便,配置都是在php-fpm.ini的文件内
而启动,重启都可以从php/sbin/php-fpm中进行
更 方便的是修改php.ini后可以直接使用php-fpm reload进行加载
无需杀掉进程就可以完成php.ini的修改加载
结果显 示使用php-fpm可以使php有不小的性能提升
php-fpm控制的进程.cpu回收的速度比较慢.内存分配的很均匀
而spawn- cgi控制的进程CPU下降的很快.而内存分配的比较不均匀.
有很多进程似乎未分配到,而另外一些却占用很高.
可能是由于进程任务分配的 不均匀导致的.而这也导致了总体响应速度的下降
而php-fpm合理的分配.导致总体响应的提到以及任务的平均
PHP FastCGI 进程管理器: PHP-FPM
http://www.dbanotes.net/web/php_fastcgi_phpfpm.html
php-fpm与spawn-fcgi 比较
http://none.at/phpfm/docs/current_php_fastcgi_problems_en.html
http://php-fpm.org/
http://imcat.in/
安装记录
参考:张晏http://blog.s135.com/nginx_php_v6/
php fastcgi
wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.13-fpm-0.5.13.diff.gz
wget http://www.php.net/get/php-5.2.13.tar.gz/from/this/mirror
tar zxvf php-5.2.13.tar.gz
gzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1
#注:把fpm以打补丁的方式放到php安装目录。据官方http://php-fpm.org/
消息php-fpm已经放到php的核心代码的svn中,相信不久就不用以打补丁安装了
cd php-5.2.13/
./configure --enable-fastcgi --prefix=/data1/server/php-cgi --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --with-mysql --with-mysqli --with-pdo-mysql --enable-sockets --with-curl --with-ttf --with-libxml-dir --with-config-file-path=/data1/server/php-cgi/etc --with-zlib --enable-exif --enable-ftp --with-xmlrpc --enable-zip --with-iconv-dir --with-libxml-dir --with-mcrypt --with-tidy --with-tidy --enable-fpm --enable-force-cgi-redirect
make && make install
cp php.ini-dist /data1/server/php-cgi/etc/php.ini
ulimit -SHn 65535
/data1/server/php-cgi/sbin/php-fpm start
出现错误
[ERROR] fpm_unix_conf_wp(), line 124: please specify user and group other than root, pool 'default'
注释取消掉
./etc/php-fpm.conf中的
tail -f /data1/server/php-cgi/logs/php-fpm.log