php-fpm中文,php-fpm文档中文翻译

news/2024/7/3 6:30:53 标签: php-fpm中文

fast-cgi是做啥用的

FastCGI是一个可伸缩的,高速地在web server和脚本语言间交互的接口。关于FastCGI技术的更多信息可以在官方网站和这里看到。

多数流行的web server都支持FastCGI。包括Apache(mod_fastcgi和mod_fcgid),Zeus,nginx和lighttpd。

FastCGI的主要优点是把动态语言和web server分离开来。这种技术允许把web server和动态语言运行在不同的主机上,以大规模扩展和改进安全性而不损失生产效率。

php-fpm可以和任何支持远端FastCGI的web server工作。

php-fpm是做啥用的

很不幸,官方网站php.net上的php在将FastCGI SAPI用于生产环境时有许多已知的问题。

下面的一些证据足以表明为什么离开了php-fpm,就很难使用FastCGI SAPI。

描述 php自带的 spawn-fcgi + spawn-php.sh + daemontools php-fpm php守护程序: pid file, log file, setsid(), setuid(), setgid(), chroot() (-) (+) (+) 进程控制,可以平滑地重启、重新载入配置和二进制模块而不丢失请求 php4 – php5 只能平滑停止 (-) (+) 限制ip地址,可以满足web server的要求 php4 (-) php5 (+) (从 5.2.2 开始) (-) (+) 根据负载动态调整进程数 (-) (-) Todo 使用用不同的uid / gid / chroot / 环境变量,不同的 php.ini 选项,不需要safe mode (-) (-) (+) 记录work process的stdout和stderr (-) (-) (+) 如果使用优化器,在遇到opcode缓存随机损坏的时候紧急重启所有进程 (-) (-) (+) 如果set_time_limit没有起作用,强制结束过期进程 (-) (-) Todo 特色功能 Error header、优化的上传支持、fastcgi_finish_request()

特色功能

所有的这些功能都是用不打断的方式。也就是说,如果你不使用他们,他们的存在不会影响php的功能,也就是透明的。

Error header

类型:方便

默认情况下,如果被访问的php脚本包含语法错误,用户会收到一个空的"200 ok"页。这是不方便的。Error header这个php.ini选项允许在这种情况下产生一个HTTP错误码,比如"HTTP/1.0 550 Server Made Big Boo",从而中断web server请求并显示一个正确的错误页。如果要实现这样的功能,需要在php.ini中添加一条fastcgi.error_header = "HTTP/1.0 550 Server Made Big Boo"

在php-5.2.4中添加了类似的功能,不过是简化的。如果被访问的php脚本包含语法错误,并且display_errors设为false, 且没有进一步的设置,会立刻返回"HTTP/1.0 500 Internal Server Error"。如果你需要设定一个不同于500的错误码(已经在许多情况下被使用)。或者想要使这个行为独立于display_errors的设置,那么 可以使用fastcgi.error_header。如果你同时使用php-5.2.5或以上版本和php-fpm,那么 fastcgi.error_header的优先级更高。

优化的上传支持

类型:优化

这个特性,就如标题那样,可以加速大POST请求的处理速度,包括文件上传。优化是通过确保请求体已写入一个临时文件,然后传递文件名而不是请求体 到fastcgi协议来实现的。目前,就我所知,只有nginx0.5.9以上才支持这个功能。显然,这种模式只在php和web server在一台机器上的时候才能用。

nginx样例配置:

location ~ .php$ {

fastcgi_pass_request_body off;

client_body_in_file_only clean;

fastcgi_param REQUEST_BODY_FILE $request_body_file;

fastcgi_pass …;

}

在php中不需要配置任何东西。如果php收到了参数REQUEST_BODY_FILE,就读取其中的请求体,如果没有,就自行从fastcgi协议中读取请求体。

结合这个特性,可以考虑对临时文件使用内存文件系统,例如tmpfs(linux):

client_body_temp_path /dev/shm/client_body_temp;

fastcgi_finish_request()

类型:优化

这个特性可以提高php处理请求的速度。如果有些处理可以在页面生成完后进行,就可以使用这种优化。比如,在memcached中保存 session就可以在页面交给web server后进行。fastcgi_finisth_request(),这一特性可以结束响应输出,web server可以立即开始交给等不及的客户端,而此刻,php可以在请求的上下文环境中处理许多事情。比如保存session,转换上传的视频,处理统计 等等。

fastcgi_finisth_request()会触发shutdown 函数运行。

FAQ

Q:php-fpm可以和ZendOptimize一起用吗?

A:完全可以。

Q:php-fpm可以和ZendPlatform、xcache、eAccelerator、APCden等等的优化器一起用吗?

A:是的。php-frpm的架构和任何一种用于高速opcode缓存的共享内存都适用。唯一的限制是:所有的worker进程只能适用一个缓存,即使它们用不同的uid/gid运行。

Q:为什么要用root运行php-fpm呢?这安全吗?

A:用root启动php-fpm只有在你打算用不同uid/gid的 php来处理请求时才有意义意。比如,在共享主机上的不同站点。因为只有在master进程用root运行的时候,才可以建立不同uid/gid的子进 程。这是相当安全的。master进程自己从来不会去处理请求。

在任何情况下,php-fpm都不会用root身份来处理请求。

Q:php-fpm可以加速请求处理速度吗?

A:不,没有影响。不过,如果你使用一些特殊特性,对于一些特定的请求可以有些许性能提升。

Q:php-fpm将来会被官方的php包含吗?

A:我很尊重php开发团队和他们的工作。相信他们能做得完美。但不幸的是,就我的经历看来,他们太忙了,似乎讨论php-fpm这个补丁会用相当多的时间,而我则完全没时间。

简要说明:

php-fpm是根据最小惊奇原则构建的。这是对于缺乏文档的唯一理由。我保证很快会建立一个wiki。如果你有问题的话,请不要犹豫在上面列出的邮件组里写邮件。

php-fpm已经在linux、macosx、Solaris和freebsd上测试通过。

确信libxml2(在某些系统上叫做libxml2-devel)已经安装。

下载php和php-fpm

$ bzip2 -cd php-5.2.5.tar.bz2 | tar xf –

$ gzip -cd php-5.2.5-fpm-0.5.7.diff.gz | patch -d php-5.2.5 -p1

$ cd php-5.2.5 && ./configure –enable-fastcgi –enable-fpm

$ make all install

编辑$prefix/etc/php-fpm.conf

运行$prefix/bin/php-cgi –fpm

检查$prefix/logs/php-fpm.log的细节

运行phpinfo()检查你的网站是否正常

master进程的pid被存放在$prefix/logs/php-fpm.pid

master进程可以理解以下信号:

SIGINT, SIGTERM 直接终止

SIGQUIT 平滑终止

SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块

译注:创建补丁后,会产生一个补丁文件。在./configuire后会提示你打上。configure比较费时,如果直接打上补丁再./configure可以省些时间。

php-fpm还带有一个更方便的脚本,在$prefix/sbin/php-fpm。可以用php-fpm start|graceful|restart|stop来维护。稍编辑一下就可以让它使用配置文件。

这个文档原来基本都是俄文的。我是用google翻译先弄成英文,然后再翻成中文。这当中会产生些错误,可能是google的,也可能是我的。如果你发现了,请指出,谢谢。

p.s. 先感谢下digitalsonic帮我挑了几个错。


http://www.niftyadmin.cn/n/1288098.html

相关文章

获取表结构信息(字段名,类型,长度,精度,小数位数,主键,自动增长)...

原文:获取表结构信息(字段名,类型,长度,精度,小数位数,主键,自动增长)获取表结构的一些简要信息,可以生成自己需要的字典,简单又实用! 以数据表PP…

JAVA冰箱评测开题报告,关于电冰箱相关论文范例,与电冰箱制冷系统的维修技术相关研究生毕业论文开题报告...

本论文为关于电冰箱相关毕业设计论文,关于电冰箱制冷系统的维修技术相关研究生毕业论文开题报告,可用于电冰箱论文写作研究的大学硕士与本科毕业论文开题报告范文和优秀学术职称论文参考文献资料下载。免费教你怎么写电冰箱及制冷剂及毛细管方面论文范文。【摘 要】…

性能测试loadrunner场景问题之socket

2.2 Socket场景问题2.21在场景执行中,异步交易socket连接中断,同步交易正常进行。在bancs稳定性测试中遇到过该问题,经过检查并不是系统出现故障导致服务中断,而是loadrunner种场景设置的问题。由于分端口进行测试异步脚本分成了四…

单相桥式有源逆变电路matlab,单相桥式有源逆变电路在MATLAB中的建模与仿真

电子技术研发Electronics R&D 电子技术 10.3969~.issn.1000—0755.2016.04.001 蔡红专 吴玉平 眸 涛 曹 琴 (西京学院控制工程学院,陕西 西安 710123) 摘 要:通过对单相桥式全控…

ssm框架整合_SSM框架整合(超详细)

SpringSpringMVCMybatisSpring负责bean配置和事务,aop等SpringMVC负责web层逻辑及JSP页面Mybatis负责持久层逻辑,与数据库进行交互Mybatis层:高度集成,降低耦合,Mybatis配置文件存在的必要性越来越小,在Mybatis配置中配…

asp.net core中使用log4net

和之前的ASP.NET MVC中的使用LOG4NET的方法有些不同&#xff0c;这里先记录一下&#xff0c;使用步骤如下 &#xff1a; 1. 建立 ASP.NET CORE项目中&#xff0c;NUGET中搜索log4net后下载安装 2. 根目录建立 log4net.config文件&#xff0c;内容如下&#xff1a; <?xml ve…

php的count函数怎么用,学习猿地-php中count函数的用法

php中count函数的用法&#xff1a;【count(array, mode)】&#xff0c;其中参数array规定要计数的数组&#xff0c;mode规定函数的模式。count函数用于返回数组中元素的数目。本文操作环境&#xff1a;windows10系统、php 7.3、thinkpad t480电脑。count() 函数返回数组中元素的…

python 大智慧股票行情数据_Python获取股票历史数据和收盘数据的代码实现

各种股票软件&#xff0c;例如通达信、同花顺、大智慧&#xff0c;都可以实时查看股票价格和走势&#xff0c;做一些简单的选股和定量分析&#xff0c;但是如果你想做更复杂的分析&#xff0c;例如回归分析、关联分析等就有点捉襟见肘&#xff0c;所以最好能够获取股票历史及实…