课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的编程开发语言被程序员掌握,而今天我们就一起来了解一下关于PHP编程开发的运行模式都有哪些类型。
一、CLI模式
Command Line Interface的简称,支持windows和Linux平台
直接在命令行运行,不需要http server,例如php test.php
应用场景
定时任务
开发桌面应用使用PHP-CLI和GTK包
二、CGI模式
Common Gateway Interface的简称,连接网页和web服务器执行程序,把http服务器接受指令传给执行程序,把执行程序的结果返回给http服务器,支持跨平台
执行过程
http服务器接收到用户请求,如index.php,会通过它配置的cgi服务执行
生成一个php-cgi进程,并执行php程序
执行结果返回给http服务器
应用场景
提供http服务
优缺点
跨平台,几乎能在任何操作系统实现
web和server是独立的,结构清晰,可控性强
性能比较差,每一个请求fork一个进程,消耗资源比较多(fork-and-execute模式)
逐渐少见
三、FastCGI模式
快速通用网关接口(Fast Common Gateway Interface)是CGI的增强版本,是一种让交互程序和web服务器通信的协议,致力于减少web服务器和CGI程序之间互动开销,使服务器可以同时处理更多的网页请求
执行过程
web服务器启动时载入Fast CGI进程管理器(php-fpm)
FastCGI进程管理器会启动多个CGI进程等待web服务器的连接
当客户端请求到达web服务器时,FastCGI进程管理器选择并连接到一个CGI解释器。web服务器把环境变量和标准输入发送到FastCGI子进程php-cgi
FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回web服务器。当FastCGI子进程关闭连接时,请求报告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器的下一个连接。在CGI模式中,php-cgi在此便退出了
应用场景
提供http服务
优缺点
跨平台,几乎能在任何操作系统实现
web和server是独立的,结构清晰,可控性强
支持大并发
多进程,消耗较多内存
四、模块模式
模块模式指把PHP作为web服务器的一个模块运行
IIS的ISAPI和Apache的apache2handler
apache2handler
apache监听一个用户请求index.php
apache根据conf文件配置的LoadModule php_module modules/mod_php5.so(windows下面是php5apache2_2.dll)调用PHP
在mod_php5.so注册一个php的钩子php_ap2_register_hook
php_ap2_register_hook钩子函数中包括4个挂钩以及对应的函数ap_hook_pre_config,ap_hook_post_config,ap_hook_handler,ap_hook_child_init。其中pre_config,post_config,child_init是启动挂钩,在服务器启动时调用。handler时请求挂钩,在服务器处理请求时调用。其中post_config挂钩中启动php。
php执行完成后数据通过.so或dll返回给apache
apache将数据返回到客户端
应用场景
提供http服务
优缺点
安装配置方便,不需要安装代码解析程序
支持多线程,占用资源少
支持大并发
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!