当前位置:首页 > PHP教程 > 正文内容

php生命周期介绍_php教程,php

搜教程4年前 (2020-03-20)PHP教程222

使用phpdbg来调试php程序的方法介绍_php教程

PHPDBG是一个PHP的SAPI模块,可以在不用修改代码和不影响性能的情况下控制PHP的运行环境。本文就来为大家介绍一下使用phpdbg来调试php程序的方法。

PHP的运行模式:

PHP两种运行模式是WEB模式、CLI模式。无论哪种模式,PHP工作原理都是一样的,作为一种SAPI运行。

1、当我们在终端敲入php这个命令的时候,它使用的是CLI。

它就像一个web服务器一样来支持php完成这个请求,请求完成后再重新把控制权交给终端。

2、当使用Apache或者别web服务器作为宿主时,当一个请求到来时,PHP会来支持完成这个请求。一般有:

  • 多进程(通常编译为apache的模块来处理PHP请求)

  • 多线程模式

简要的执行过程:

1、PHP是随着Apache的启动而运行的;

2、PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);

3、PHP总共有三个模块:内核、Zend引擎、以及扩展层;

4、PHP内核用来处理请求、文件流、错误处理等相关操作;

5、Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;

6、扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要MySQL扩展来连接MySQL数据库;

7、当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;

8、最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。

运行PHP的几个阶段:

SAPI运行PHP都经过下面几个阶段:

1、模块初始化阶段(Module init) :

php链式操作的实现_php教程

所谓链式操作最简单的理解就是操作完毕之后再返回对象$this,本文就来为大家介绍一下php链式操作的实现,希望对大家有一定的帮助。

即调用每个扩展源码中的的PHP_MINIT_FUNCTION中的方法初始化模块,进行一些模块所需变量的申请,内存分配等。

2、请求初始化阶段(Request init) :

即接受到客户端的请求后调用每个扩展的PHP_RINIT_FUNCTION中的方法,初始化PHP脚本的执行环境。

3、执行PHP脚本

4、请求结束(Request Shutdown) :

这时候调用每个扩展的PHP_RSHUTDOWN_FUNCTION方法清理请求现场,并且ZE开始回收变量和内存。

5、关闭模块(Module shutdown) :

Web服务器退出或者命令行脚本执行完毕退出会调用扩展源码中的PHP_MSHUTDOWN_FUNCTION 方法

各种情况下的SAPI生命周期

1. 单进程SAPI生命周期。(CGI)

CLI/CGI模式的PHP属于单进程的SAPI模式。这类的请求在处理一次请求后就关闭。也就是说每次请求都会重复这几个环节: 开始 - 请求开始 - 请求关闭 - 结束 。可以看到扩展的初始化花费了很多资源。

2. 多进程SAPI生命周期。(MPM的perfork方式)

通常PHP是编译为apache的一个模块来处理PHP请求(mod_php)。Apache一般会采用多进程模式, Apache启动后会fork出多个子进程(apache里可以指定开始fork出来的进程数)。每个进程的内存空间独立,每个子进程刚被fock出来都会经过开始和结束环节。

3. 多线程的SAPI生命周期。(FastCGI或者MPM的work方式里的单个进程)

多线程模式和多进程中的某个进程类似,在这种模式下,只有一个服务器进程在运行着,但会同时运行很多线程,这样可以减少一些资源开销,向Module init和Module shutdown就只需要运行一遍就行了,一些全局变量也只需要初始化一次,因为线程独具的特质,使得各个请求之间方便的共享一些数据成为可能。

相关推荐:

PHP视频教程:https://www.ki4.cn/course/list/29/type/2.html

以上就是php生命周期介绍的详细内容,更多请关注ki4网其它相关文章!

PHP fsockopen函数详解_php教程

PHP fsockopen是一个功能比较强大的函数。我们在这篇文章中将会对这个函数做一个具体的介绍,希望对大家有所帮助。

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/17402.html

标签: php
分享给朋友:

“php生命周期介绍_php教程,php” 的相关文章

thinkphp5的get和post数据封装的要领引见(代码)【php教程】,thinkphp5

本篇文章给人人带来的内容是关于thinkphp5的get和post数据封装的要领引见(代码),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 thinkphp5的get和post数据封装 一、view(html页面猎取数据) 二、控制器 一、view(html页面...

php流程掌握的学问总结(附示例)【php教程】,php流程控制

本篇文章给人人带来的内容是关于php流程掌握的学问总结(附示例),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 PHP 的遍历数组的三种体式格局:for轮回、foreach轮回、while、list()、each()组合轮回 PHP当中数组分为:索引数组【转换成js...

PHP如何将整数数字转换为罗马数字?(代码示例)【php教程】,PHP,罗马数字

PHP如何将整数数字转换为罗马数字?(代码示例)【php教程】,PHP,罗马数字

如何将一个整数数字转换为罗马数字显现?下面本篇文章就来带人人相识运用PHP将整数数字转换为罗马数字的要领,愿望对人人有所协助。 要领一:自定义函数 我们可以本身手动编写一个函数来完成此功用,这个函数可以将数字作为第一个参数,将其转换为罗马并返回。 注:大多数算法只能在1-4999的范围...

PHP怎样完成斐波那契数列?(代码实例)【php教程】,PHP,斐波那契数列

PHP怎样完成斐波那契数列?(代码实例)【php教程】,PHP,斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子滋生为例子而引入,故又称为“兔子数列”,指的是如许一个数列:1、1、2、3、5、8、13、21、34、……,简朴来讲,斐波那契数列就是一系列元素,前两个...

PHP7言语的实行道理(PHP7源码剖析)【php教程】,PHP7执行原理

PHP7言语的实行道理(PHP7源码剖析)【php教程】,PHP7执行原理

我们经常运用的高等言语有很多种,比较着名的有CC++、Python、 PHP、Go、Pascal等。而这些言语依据运转的体式格局差别,大致分为两种:编译型言语和诠释型言语。 个中,编译型言语包括CC++、Pascal、Go等。这里说的编译是指在运用源顺序实行之前,就将顺序源代码“翻译”成汇编言...

PDO与MySQLi:PHP数据库API之战【php教程】,PDO,MySQLi,API

PDO与MySQLi:PHP数据库API之战【php教程】,PDO,MySQLi,API

引见 运用mysql_扩大的日子已过去了,由于自PHP 5.5以来它的要领已被弃用,而且从PHP 7最先被删除。然则互联网上依然充溢着大批的旧教程,初学者只需复制/粘贴并在同享主机平台上运用旧版本的PHP即可。 假如你在PHP中运用MySQL或MariaDB,那末你如今可以挑选MySQLi或...