php php-fpm安装记录

本文详细介绍了CGI及FastCGI的概念和技术特点,并通过实际案例比较了FastCGI与传统CGI的区别,同时深入探讨了PHP-FPM作为FastCGI进程管理器的应用优势。

转载自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

 

fastcgicgi特点

1.       CGIFastCGI也具有语言无关性.

2.       CGI, FastCGI在进程中的应用程序,独立于核心web服务器运行,提供了一个比API更安全的环境。(APIs把应用程序的代码与核心的web服务器链接在一起,这意味着在一个错误的API的应用程序可能会损坏其他应用程序或核心服务器恶意的API的应用程序代码甚至可以窃取另一个应用程序或核心服务器的密钥。)

3.       虽然FastCGI不能一夜之间像cgi那样普及,但fastcgi的开发人员致力于把fastcgi作为一个开放性的标准进行传播. FastCGI技术目前支持语言有:C/C++JavaPerlTclPythonSmallTalkRuby等。相关模块在Apache, ISS, Lighttpd等流行的服务器上也是可用的。

4.       CGIFastCGI的不依赖于任何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 cgirequest 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-fpmspawn-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中的

<value name="user">nobody</value>   

<value name="group">nobody</value>

 

 

 tail -f /data1/server/php-cgi/logs/php-fpm.log

可以查看log
如果是出现9000端口被占用的话,执行“killall -9 php-cgi”杀掉进程,在启动就OK了
下载方式:https://pan.quark.cn/s/a4b39357ea24 布线问题(分支限界算法)是计算机科学和电子工程领域中一个广为人知的议题,它主要探讨如何在印刷电路板上定位两个节点间最短的连接路径。 在这一议题中,电路板被构建为一个包含 n×m 个方格的矩阵,每个方格能够被界定为可通行或不可通行,其核心任务是定位从初始点到最终点的最短路径。 分支限界算法是处理布线问题的一种常用策略。 该算法与回溯法有相似之处,但存在差异,分支限界法仅需获取满足约束条件的一个最优路径,并按照广度优先或最小成本优先的原则来探索解空间树。 树 T 被构建为子集树或排列树,在探索过程中,每个节点仅被赋予一次成为扩展节点的机会,且会一次性生成其全部子节点。 针对布线问题的解决,队列式分支限界法可以被采用。 从起始位置 a 出发,将其设定为首个扩展节点,并将与该扩展节点相邻且可通行的方格加入至活跃节点队列中,将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。 随后,从活跃节点队列中提取队首节点作为下一个扩展节点,并将与当前扩展节点相邻且未标记的方格标记为 2,随后将这些方格存入活跃节点队列。 这一过程将持续进行,直至算法探测到目标方格 b 或活跃节点队列为空。 在实现上述算法时,必须定义一个类 Position 来表征电路板上方格的位置,其成员 row 和 col 分别指示方格所在的行和列。 在方格位置上,布线能够沿右、下、左、上四个方向展开。 这四个方向的移动分别被记为 0、1、2、3。 下述表格中,offset[i].row 和 offset[i].col(i=0,1,2,3)分别提供了沿这四个方向前进 1 步相对于当前方格的相对位移。 在 Java 编程语言中,可以使用二维数组...
源码来自:https://pan.quark.cn/s/a4b39357ea24 在VC++开发过程中,对话框(CDialog)作为典型的用户界面组件,承担着与用户进行信息交互的重要角色。 在VS2008SP1的开发环境中,常常需要满足为对话框配置个性化背景图片的需求,以此来优化用户的操作体验。 本案例将系统性地阐述在CDialog框架下如何达成这一功能。 首先,需要在资源设计工具中构建一个新的对话框资源。 具体操作是在Visual Studio平台中,进入资源视图(Resource View)界面,定位到对话框(Dialog)分支,通过右键选择“插入对话框”(Insert Dialog)选项。 完成对话框内控件的布局设计后,对对话框资源进行保存。 随后,将着手进行背景图片的载入工作。 通常有两种主要的技术路径:1. **运用位图控件(CStatic)**:在对话框界面中嵌入一个CStatic控件,并将其属性设置为BST_OWNERDRAW,从而具备自主控制绘制过程的权限。 在对话框的类定义中,需要重写OnPaint()函数,负责调用图片资源并借助CDC对象将其渲染到对话框表面。 此外,必须合理处理WM_CTLCOLORSTATIC消息,确保背景图片的展示不会受到其他界面元素的干扰。 ```cppvoid CMyDialog::OnPaint(){ CPaintDC dc(this); // 生成设备上下文对象 CBitmap bitmap; bitmap.LoadBitmap(IDC_BITMAP_BACKGROUND); // 获取背景图片资源 CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pOldBitmap = m...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值