PHP 扩展库
PHP 扩展使用C语言开发,分为两种类型,分别为内部扩展库(PHP Internal Extension)与社区扩展库PECL(PHP Extension Community Library)。
内部扩展库指被编译到PHP内部扩展库。这些扩展库包括SimpleXML、ICONV,JSON、SQLite等都含在PHP内部,总计有80多个。
而有些mysqli、PDO、overload、JSON、GD等这些库则被放在外部扩展库中,可在php.ini配置文件中打开或关闭。这些扩展库由PHP开发小组开发或认证,随新的PHP版本一起分发,即面向不同操作系统的标准软件开发包。PECL是社区版本的PHP外部扩展库,即由不同的开发者,为了实现特定功能,使用PHP的扩展接口开发的第三方扩展库。
不管是内部扩展还是外部扩展,是官方外部扩展还是第三方扩展,从使用API开发接口来区分,又分为PHP扩展和Zend扩展两种类型,它们都可以在php.ini配置文件中选择开启或关闭。
几种Web服务器
根据角色可将服务器(Server)分为数据库服务器、内存服务器及Web服务器等类型。数据库服务器安装有MySQL、MariaDB或Oracle等数据库,内存服务器安装有Memcached、Redis或MangoDB等NoSQL数据库。
Web服务器安装Nginx或Apache这样的软件,由它们负责接收客户端/浏览器请求,例如给浏览器返回网页、图片、JavaScript、CSS以及音视频流等,若发现请求的资源是PHP,则转给PHP解释器,解释器“翻译”好后,将内容返回给Web服务器,后者将内容发送给浏览器。
Web 服务器也称HTTP服务器或网站服务器,它使用HTTP(超文本传输协议)响应用户请求并提供Web页面内容。
关于运行环境的几个类别:
1)本地环境
此处指的是在本地计算机,自己安装搭建的开发环境,可以是本地操作系统上,也可以是虚拟机。这样可以在离线状态下运行和调试代码,联网时可以使用Git,SVN等版本管理工具协同。
2)测试环境
当团队开发完系统,交给测试工程师,后者根据功能对进行代码Review,整体产品测试,如果有bug,反馈测试报告,开发团队解决后再回归测试。测试环境可以在外网,也可以是在内部局域网或者混合环境,包括异构网络也能够正常运行。
3)发布环境
此处为最新测试完毕并没有任何问题的,可以上线的代码。为避免影响实际环境的运营,或者基于不同用户的测试,此处产品只给部分用户可见,称为灰度上线,当部署无误后再完全上线。
4)生产环境
此环境为给用户使用的所有产品代码。此环境上的代码按规则不允许开发人员直接修改,以免影响整体运行,包括对用户体验和运营的关联损失。
Apache
图1-15 Apache 官网(https://www.apache.org)
Apache(读作阿帕奇)从1994年IBM的NCSA小型Web服务器发展而来。最初是靠热心的程序员、黑客和网管以补丁的形式来维护,从1.3版本开始起以Apache的正式名字完全开源。
Apache 服务器具有如下特性:
Ø 模块化
以模块化方式支持多种编程语言,主流如Perl、PHP及Ruby等;同时也支持CGI/FastCGI。
Ø 安全性
Apache开发小组会在安全性问题被发现以最快方式发布更新补丁;
Ø 兼容性
支持主流操作系统,如Windows/FreeBSD/Linux/macOS等;
Ø 可移植性好
在不同的异构操作系统中,可平滑移植;
Ø 多线程
多线程Apache支持Unix的POSIX多线程与多进程混合模式,在Windows下运行为多线程模式;
Ø 定制化
可以自由定义运行参数&编译环境,以适应不同的环境;
Ø 自定义错误文档&多字符集支持
管理员可方便地更改错误页面,如404、500等错误页面的定制化;Apache支持UTF-8、GBK、Shift JIS、BIG5等全球语系等的多种字符集。
Linux与Apache以及MySQL/MariaDB、PHP组合称为LAMP技术栈。
IIS
图1-16 微软 IIS (https://www.iis.net)
微软的产品不一定都是最好的,但却是非常易用的。
不可否认的是,IIS(全称为Internet Information Server)的使用比率与它的承载平台的垄断地位有关,另一方面其易用性继承了Windows的传统,使用鼠标就可以配置,这在安装部署方面相对方便。使用IIS也可以完美地支持PHP,在性能方面相对稳定。
有时,一些应用需要在Windows Server服务器运行,特别是混合语言环境,不仅要支持PHP,还要支持.NET、ASP、Python等,这时就需要IIS服务器来支撑运行环境。
Nginx
图1-17 Nginx 官方网站(https://www.nginx.org)
Ngnix(读作engine-x)是由俄罗斯工程师Igor Sysoev开发的一款高性能的Web服务器软件。总结它的技术特性如下:
1)支持高并发连接
Nginx使用了最新的epoll(Linux)和kqueue(FreeBSD)网络I/O模型,能够支撑5万并发连接,在实际生产环境中可以支撑2~4万并发连接数。
2)内存消耗小
有数据表明,Nginx+PHP(FastCGI)服务器,在3万并发连接下,开启10个Nginx进程仅消耗150MB内存。
3)性价比高
购买F5、BIG-IP、NetScaler等硬件负载均衡设备,动辄需要几十万到几百万,而Nginx作为开源软件,采用的是2-clause BSD-like协议,可免费用于商业用途。
4)配置简便
Nginx的配置文件和代码一样通俗易懂,即使不是系统管理员也能看得懂。
5)支持Rewrite重写
可根据域名、URL的不同,将HTTP请求分配到不同的后端集群系统。
6)内置健康检查功能
即使Nginx代理后端的某台服务器宕机,会跳过该机器,不会影响前端的访问。
7)节省带宽
支持GZip压缩,可以添加浏览器本地缓存的HTTP 头信息中。
8)稳定性高
Nginx最早用于反向代理服务,比如CDN网络分发,动静分离。
9)支持热部署
Nginx支持热部署,可以7x24小时不间断的运行,数个月也不需要重新启动,还能够在不间断服务的情况下,对版本进行升级。
Linux与Nginx、MySQL/MariaDB以及PHP,组合成为LNMP技术栈。从目前市场数据来看,Nginx服务器装机量已超过Apache,使用者包括淘宝、新浪、百度、Facebook等巨大型网站。