服务器程序源代码分析之二:php-fpm

服务器程序源代码分析之二:php-fpm,第1张

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部署工具,我再也不黑它了

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。

PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。自20世纪90年代国内互联网开始发展到现在,互联网信息几乎覆盖了我们日常活动所有知识范畴,并逐渐成为我们生活、学习、工作中必不可少的一部分。

扩展资料

主要特点

(一)开源性和免费性

由于PHP的解释器的源代码是公开的,所以安全系数较高的网站可以自己更改PHP的解释程序。另外,PHP 运行环境的使用也是免费的。

(二)快捷性

PHP是一种非常容易学习和使用的一门语言,它的语法特点类似于C语言,但又没有C语言复杂的地址操作,而且又加入了面向对象的概念,再加上它具有简洁的语法规则,使得它操作编辑非常简单,实用性很强。

(三)数据库连接的广泛性

PHP可以与很多主流的数据库建立起连接,如MySQL、ODBC、Oracle等,PHP是利用编译的不同函数与这些数据库建立起连接的,PHPLIB就是常用的为一般事务提供的基库。

参考资料来源:百度百科-PHP

本地还是服务器?本地的话有很多wamp 或者phpnows。要是服务器的话首先装上iis,mysql数据库,php程序和ftp。

如果是本地的话,追问,可以给你个软件。我用的就是。

在windows下安装apache php mysql

从各官方网站下了APACHE2.050、PHP5、MYSQL4.0.20、PHPMYADMIN2.57

apache_2.0.50-win32-x86-no_ssl.msi

php-5.0.0-Win32.zip

mysql-4.0.20d-win.zip

phpMyAdmin-2.5.7.zip

系统 win2003 系统盘为: D盘

第一步: 安装apache 并配置支持PHP

点击安装文件apache_2.0.50-win32-x86-no_ssl.msi

将apache安装在 D:\apache2 目录(随自己喜好)下

将php-5.0.0-Win32.zip 里内容解压到 D:\php 里

找到 php目录里的 php.ini-dist 重命名为 php.ini 并拷到 windows目录里(win2k 里为winnt)

我的php.ini是拷到 D:\windows目录

再将php目录里的 php5ts.dll,libmysql.dll 拷到 系统目录(system/system32) 如我的是D:\windows\system里

配置apache里的httpd.conf

打开 D:\Apache2\conf\httpd.conf 这个文件

找到 AddDefaultCharset ISO-8859-1 将其改为 AddDefaultCharset GB2312 (让默认语言编码为简体中文)

找到 DocumentRoot "D:/Apache2/htdocs" 将其改为你的WEB目录(可不改)如我的为 DocumentRoot "D:/website"

找到 DirectoryIndex index.html index.html.var 在后面加入 index.htm index.php

选择安装模式: 模块化模式安装 或 CGI模式安装 (选一样即可)

--------------模块化安装配置------------------------------------

找到 #LoadModule ssl_module modules/mod_ssl.so 这行,在此行后加入一行

LoadModule php5_module d:/php/php5apache2.dll

其中d:/php/php5apache2.dll 为你php目录中php5apache2.dll所在的位置

找到 AddType application/x-gzip .gz .tgz 这行,在此行后加入一行

AddType application/x-httpd-php .php

---------------------------------------------------------------

--------------CGI安装配置--------------------------------------

找到 AddType application/x-gzip .gz .tgz 这行,加入如下即可

ScriptAlias /php/ "d:/php/"

AddType application/x-httpd-php .php

Action application/x-httpd-php "/php/php-cgi.exe"

---------------------------------------------------------------

此时PHP环境基本已经配置成功

在WEB根目录(如我的D:\website)里建一个名为test.php的文件内容如下

<? echo phpinfo()?>

重新启动apache服务

用浏览器打开 http://localhost:80/index.php

如果可以看到php配置输出信息就OK了


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/200177.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存