1. 服务器程序源代码分析之二:php-fpm
php作为排名top2 互联网开发工具,非常流行,可以参考:中国最大的25个网站采用技术选型方案
php这个名称实际上有两层含义
直接定义:
php-fpm从php5.3.3开始已经进入到php源代码包,之前是作为patch存在的
很少人会去读php本身源代码,我6年前解决php内存泄露问题的时候做了些研究,最近再查看了一番,发现php的开发者很有诚意,这是一款非常出色的服务器软件,支持如下
在linux服务器上,如果不设置 events.mechanism ,那么默认就是采用epoll,所以
php-fpm的IO模型&并发处理能力和nginx是完全一致
nginx以性能卓越闻名,大部分程序员都认为php效率低下,看了源代码,才知道这是传奇啊
在高性能部署的时候,大家往往会针对性的优化nginx 。我自己之前部署php程序也犯了错误,8G内存的server,php-fpm的max children都会设置128+,现在看来太多了,参考nginx的部署:
php-fpm配置为 3倍 cpu core number就可以了
php-fpm稳定性比nginx稍差 这是因为php-fpm内置了一个php解析器,php-fpm进程就和php程序捆绑了,如果php脚本写得不好,有死循环或者阻塞在某个远端资源上,会拖累加载它的php-fpm进程
而nginx和后端应用服务器之间通过网络连接,可以设置timeout,不容易堵死的
php-fpm的fastcgi是短连接 我原以为是长连接的,看了代码才知道也是短连接,处理一个request就关闭掉
php-fpm接口采用fastcgi 非常遗憾,php-fpm和fastcgi完全绑定了,无法独立使用 。只能部署在支持http-fcgi协议转换程序背后(nginx)。其实可以考虑在php-fpm代码包里面引入http协议支持,这样php-fpm可以独立运行,让nodejs无话可说
php-fpm等同于OpenResty OpenResty是一个国人开发的nginx模块,就是在nginx引入lua解释器. 实际上,它和php-fpm的唯一差别就是一个采用php语法,一个用lua,所以OpenResty要作为nginx增强包使用还可以,要选择它作为一个主要编程工具,没有任何必要
从架构上来说,php-fpm已经做到最好,超过大多数 python部署工具,我再也不黑它了
2. php鏂囦欢鐢ㄤ粈涔堣蒋浠舵墦寮
php鏂囦欢𨱍冲繀寰埚氩皬浼欎即纰板埌杩囷纴浣嗘槸閮芥瘆杈冮檶鐢燂纴涓岖煡阆损hp鏂囦欢鏄浠涔堬纴镐庝箞镓揿紑锛屽叾瀹瀙hp鏂囦欢鏄涓绉岖函鏂囨湰鏂囦欢锛屽叾涓鍖呭惈PHP缂栫▼璇瑷缂栧啓镄勪唬镰佸眬瀚屾。锛屾兂瑕佹墦寮瀹冧竴鍏辨湁锲涚嶆柟娉曪纴灏忕紪鍏ㄩ儴鏀惧湪涓嬮溃镄勬枃绔犱腑浜嗭纴𨱍宠佹墦寮php鏂囦欢镄勫皬浼欎即鍙浠ユ潵鐪嬬湅鏁欑▼銆
php鏂囦欢鐢ㄤ粈涔堣蒋浠舵墦寮?
鏂规硶涓銆
1.鍙冲嚮.php鏂囦欢锛岄夋嫨璁颁簨链镓揿紑锛屽氨鍙浠ョ湅鍒版枃浠朵唬镰佸暒!
鏂规硶浜屻
1.Dreamweaver鏄缃戦〉缂栬緫鍣锛屾瘆杈冩祦琛岀殑缃戠珯寮鍙戝伐鍏凤纴浣犲彲浠ョ洿鎺ユ妸鏂囦欢𨰾栬繘铡诲氨鍙浠ユ愪贡镓揿紑php鏂囦欢浜嗐
鏂规硶涓夈
1.Notepad++宸ュ叿涔熸槸浠g爜缂栬緫鍣锛岄夋嫨鏂囦欢镓揿紑灏辫屻
鏂规硶锲涖
1.杩桦彲浠ョ敤SublimeText宸ュ叿锛屽拰涓婇溃鏂规硶涓镙凤纴鐩存帴阃夋嫨鏂囦欢镓揿紑灏辫屻
浠ヤ笂灏辨槸灏忕紪涓哄ぇ瀹跺甫𨱒ョ殑php鏂囦欢鐢ㄤ粈钥呯噧涔堣蒋浠舵墦寮镄勬柟娉曚简锛屽笇链涜兘甯锷╁埌澶у躲