php-fpm简介
2018-06-22 05:10:30来源:未知 阅读 ()
What is PHP-FPM?
PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites.
These features include:
- Adaptive process spawning (NEW!)
- Basic statistics (ala Apache's mod_status) (NEW!)
- Advanced process management with graceful stop/start
- Ability to start workers with different uid/gid/chroot/environment and different php.ini (replaces safe_mode)
- Stdout & stderr logging
- Emergency restart in case of accidental opcode cache destruction
- Accelerated upload support
- Support for a "slowlog"
- Enhancements to FastCGI, such as fastcgi_finish_request() - a special function to finish request & flush all data while continuing to do something time-consuming (video converting, stats processing, etc.)
It was not designed with virtual hosting in mind (large amounts of pools) however it can be adapted for any usage model.
Why PHP-FPM?
PHP-FPM not only makes configuration of FastCGI pools, but also enhances some of the FastCGI internals and increases error reporting, script terminiation, etc.
This table has a simple comparison between the most popular methods of managing FastCGI pools.
Description | PHP "out of the box" | spawn-fcgi + spawn-php.sh + daemontools | PHP-FPM |
---|---|---|---|
PHP daemonization: pid file, log file, setsid(), setuid(), setgid(), chroot() | (-) | (+) | (+) |
Process Management. Ability to "gracefully" stop and start PHP workers without losing any queries. This allows gradually updating the configuration and binary without losing any queries. | php4 (-), php5 (only graceful completion) | (-) | (+) |
Restricting IP addresses from which requests can come from | php4 (-), php5 (+) (since 5.2.2) | (-) | (+) |
Dynamic number of processes, depending on the load (adaptive process spawning) | (-) | (-) | in SVN, PHP 5.3.3RC1+ |
Starting the workers with different uid/gid/chroot/environment and different php.ini options. (No need for safe mode.) | (-) | (-) | (+) |
Logging stdout and stderr | (-) | (-) | (+) |
Ability to emergency restart all the processes in the event of an accidental destruction of the shared memory opcode cache, if using an accelerator | (-) | (-) | (+) |
Forcing the completion of process if set_time_limit() fails | (-) | (-) | (+) |
Features | |||
Error Header | (+) | ||
Accelerated Upload Support | (+) | ||
fastcgi_finish_request() | (+) | ||
Slowlog (with backtrace) | (+) |
History
Andrei Nigmatulin is the original author of PHP-FPM. Since 2004, he waited for someone else to make PHP FastCGI production-ready, but he couldn't wait any longer. PHP-FPM is the product of the knowledge, experience and ideas from working with PHP's FastCGI SAPI on several projects.
Since that time, it has evolved into a stable, simple solution to an annoying problem that has not been addressed properly. In mid-2009, Andrei changed the format of PHP-FPM to be more modular, and no longer be a patch that had to be applied against PHP. The source code has been split up from one large patch to a normal set of files. Michael Shadle volunteered to take over the project and work on growing it into a more robust solution. There were a couple major features Andrei was never able to finish, and we're hoping to address those soon - the most important one is adaptive process spawning.
Currently, we're working on making sure that it can be packaged in distributions, the website is clean, consistent and easy to use, and the information is relevant, concise and up to date.
It has recently been brought in to PHP core, thanks to Antony Dovgal, with interim support from Dreamcat4 and continued work from Jér?me Loyet. Andrei's original vision is finally starting to become complete.
Real-world Usage
PHP-FPM serves up millions of PHP requests without an issue for hundreds of websites, with more growing each day. At Open Source Bridge in Portland, Rasmus mentioned he now uses nginx + PHP-FPM at wepay.com, the company he works for. It doesn't get more ratified than that!
License
PHP-FPM is available for public use and licensed under the GPL. The modified version of libevent, which is bundled with PHP-FPM, is distributed under a the BSD license.
转自 https://php-fpm.org/
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:前端学PHP之正则表达式基础语法
下一篇:【PHP系列】PHP组件详解
- 基于PHP-FPM进程池探秘 2020-03-22
- 详解php-fpm配置的操作方法 2019-10-08
- 基于JWT的Token登录认证 2019-07-23
- PHP新手上路(一) 2019-06-16
- PHP Array 简介 2019-04-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash