首页 > 后端开发 > 正文

php函数运行原理 对于php中的shell_exec()函数执行过程的疑问?

2025-01-10 16:12:03 | 我爱编程网

php函数运行原理 对于php中的shell_exec()函数执行过程的疑问?相关内容,小编在这里做了整理,希望能对大家有所帮助,关于php函数运行原理 对于php中的shell_exec()函数执行过程的疑问?信息,一起来了解一下吧!

本文目录一览:

php函数运行原理 对于php中的shell_exec()函数执行过程的疑问?

求PHP高手解析一下shuffle函数的实现原理

你好,shuffle函数是随机变换数组元素位置,其实思路很简单,我们知道数组都可以计算其长度,$len=count($array)以后,我们只要用循环配合rand(0,$len)随机出一个位置,保存到一个新数组当中,因为在循环中,随机出来的位置可能一样,这时判断该随机位置有没在数组中,若有继续rand,没有则存进数组,直到个数够了,然后在逐个array【位置】,这样每次只有刷新,数组位置就发生变换,用手机敲代码太慢了,若要代码,可联系我扣扣185 3953 618
希望可以帮到你。望采纳。

php函数运行原理 对于php中的shell_exec()函数执行过程的疑问?

对于php中的shell_exec()函数执行过程的疑问?

执行过程疑问:在PHP中,关于shell_exec()函数的执行机制,可能存在一些混淆。

exec()系列函数的功能在于替换当前进程的执行环境,包括代码段、初始化数据段、非初始化数据段和栈都会被替换。

然而,针对shell_exec的解释却有所不同。它仅通过shell执行命令并将结果作为字符串返回,它并未实现替换当前进程的机制。因此,循环执行命令后,程序依然可以运行到第二轮。

尝试执行如下代码,执行时间大约在10秒左右,可能略高于10秒。

使用microtime()获取的时间戳,格式为小数在前整数在后。此函数返回的字符串类型,直接相减将产生类型错误。

尝试进行字符串间的减法运算,会触发PHP的警告信息。

错误示例:PHP Notice: A non well formed numeric value encountered...

对于字符串 "0.51262900 1517129110" 和 "0.51262900 1517129100" 进行减法运算,正确的理解是应当忽略字符串格式,仅考虑数值部分进行运算。

php网页运行原理

我爱编程网(https://www.52biancheng.com)小编还为大家带来php网页运行原理的相关内容。

转载以下,希望对你有帮助:

你有没有想过PHP是怎么在浏览器里输出“你好世界”的?我也是看了PHP内核和扩展后才知道的。也许有些朋友也想知道其中原理,那就让我们开始吧。

在上一篇网志里我简单介绍了“在我浏览这个页面之前都发生了些什么?”这个问题。如果你错过了就点这里看看吧。现在我要讨论的是“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层,最终输出到浏览器上。

深入探讨

等等,没有这么简单。以上过程只是个简略版,让我们再深入挖掘一下,看看幕后还发生了些什么。

1. Apache启动后,PHP解释程序也随之启动;
2. PHP的启动过程有两步;
3. 第一步是初始化一些环境变量,这将在整个SAPI生命周期中发生作用;
4. 第二步是生成只针对当前请求的一些变量设置。

PHP启动第一步

不清楚什么第一第二步是什么?别担心,我们接下来详细讨论一下。让我们先看看第一步,也是最主要的一步。要记住的是,第一步的操作在任何请求到达之前就发生了。

1. 启动Apache后,PHP解释程序也随之启动;
2. PHP调用各个扩展的MINIT方法,从而使这些扩展切换到可用状态。看看php.ini文件里打开了哪些扩展吧;
3. MINIT的意思是“模块初始化”。各个模块都定义了一组函数、类库等用以处理其他请求。

一个典型的MINIT方法如下:

PHP_MINIT_FUNCTION(extension_name){

/* Initialize functions, classes etc */

}

PHP启动第二步

1. 当一个页面请求发生时,SAPI层将控制权交给PHP层。于是PHP设置了用于回复本次请求所需的环境变量。同时,它还建立一个变量表,用来存放执行过程中产生的变量名和值。
2. PHP调用各个模块的RINIT方法,即“请求初始化”。一个经典的例子是Session模块的RINIT,如果在php.ini中启用了Session 模块,那在调用该模块的RINIT时就会初始化$_SESSION变量,并将相关内容读入;
3. RINIT方法可以看作是一个准备过程,在程序执行之间就会自动启动。

一个典型的RINIT方法如下:

PHP_RINIT_FUNCTION(extension_name) {

/* Initialize session variables, pre-populate variables, redefine global variables etc */

}

PHP关闭第一步

如同PHP启动一样,PHP的关闭也分两步:

1. 一旦页面执行完毕(无论是执行到了文件末尾还是用exit或die函数中止),PHP就会启动清理程序。它会按顺序调用各个模块的RSHUTDOWN方法。
2. RSHUTDOWN用以清除程序运行时产生的符号表,也就是对每个变量调用unset函数。

一个典型的RSHUTDOWN方法如下:

PHP_RSHUTDOWN_FUNCTION(extension_name) {

/* Do memory management, unset all variables used in the last PHP call etc */

}

PHP关闭第二步

最后,所有的请求都已处理完毕,SAPI也准备关闭了,PHP开始执行第二步:

1. PHP调用每个扩展的MSHUTDOWN方法,这是各个模块最后一次释放内存的机会。

一个典型的RSHUTDOWN方法如下:

PHP_MSHUTDOWN_FUNCTION(extension_name) {

/* Free handlers and persistent memory etc */

}

这样,整个PHP生命周期就结束了。要注意的是,只有在服务器没有请求的情况下才会执行“启动第一步”和“关闭第二步”。 我爱编程网

以上就是php函数运行原理 对于php中的shell_exec()函数执行过程的疑问?全部内容了,了解更多相关信息,关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“php函数运行原理 对于php中的shell_exec()函数执行过程的疑问?”相关推荐
对于php中的shell_exec()函数执行过程的疑问? PHP 危险函数解释
对于php中的shell_exec()函数执行过程的疑问? PHP 危险函数解释

对于php中的shell_exec()函数执行过程的疑问?执行过程疑问:在PHP中,关于shell_exec()函数的执行机制,可能存在一些混淆。exec()系列函数的功能在于替换当前进程的执行环境,包括代码段、初始化数据段、非初始化数据段和栈都会被替换。然而,针对shell_exec的解释却有所不同。它仅通过shell执行命令并将结果作为字符串返回,它并未实现替换当前进程的机制

2024-10-23 19:20:33
php中的几个输出函数(对于php中的shell_exec()函数执行过程的疑问?)
php中的几个输出函数(对于php中的shell_exec()函数执行过程的疑问?)

php中的几个输出函数1echo();2print();3die();4printf();5sprintf();6print_r();7var_dump();1echo()可以同时输出多个字符串,可以多个参数,并不需要圆括号,无返回值。2print()只可以同时输出一个字符串,一个参数,需要圆括号,有返回值,当其执行失败时返flase.print的用法和C语言很像,所以会对输

2025-02-11 07:57:21
云引擎AEC安全禁用函数 对于php中的shell_exec()函数执行过程的疑问?
云引擎AEC安全禁用函数 对于php中的shell_exec()函数执行过程的疑问?

云引擎AEC安全禁用函数禁用的函数PHPOptionsandInformation:dlget_current_userget_magic_quotes_runtimeset_magic_quotes_runtime获取脚本用户及资源信息:get_mygidget_myinodeget_mypidget_myuidgetoptgetrusage

2024-11-11 20:43:21
PHP直接调用函数和调用另外一个文件中的函数的区别 对于php中的shell_exec()函数执行过程的疑问?
PHP直接调用函数和调用另外一个文件中的函数的区别 对于php中的shell_exec()函数执行过程的疑问?

PHP直接调用函数和调用另外一个文件中的函数的区别//如果是PHP文件中的函数,唯一的区别是:先引入外部文件,然后直接调用。//如果是外部类文件中的函数,需要引入,然后new 对象后,再调用该对象的函数。$msg=test_msg();function test_msg(){echo "";}//调用外部文件中的函数//首先引入文件include_once 'file.php';$msg=t

2025-01-24 22:39:51
关于php程序的问题 php对数据进行数据处理?
关于php程序的问题 php对数据进行数据处理?

php常识选择题1.PHP选择题选择B。PHP是一种简单的,面向对象的,解释型的,健壮的,安全的,性能非常之高的,独立于架构的,可移植的,动态的脚本语言。PHP具有和JAVA类似的Class关键字。因为不需要虚拟机,以致速度比JAVA快5倍。PHP正迅速变成一种标准的,多用途的,面向对象的脚本语言。PHP不仅可用来开发Web应用程序,也可以开发普通应用程序。PHP是一种

2024-10-05 17:37:49
java运行原理 java工作原理
java运行原理 java工作原理

java运行原理Java实在”虚拟机“上进行的编译和运行。解释:在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode)(class

2024-04-27 14:51:31
关于php递归函数创建级联目录的困惑(php中mkdir函数疑问)
关于php递归函数创建级联目录的困惑(php中mkdir函数疑问)

关于php递归函数创建级联目录的困惑mkdir1刚进去就是判断$dir存不存在,a/b/c/d/e说白了就是判断有没有e文件夹如果没有继续dirname($dir)判断a/b/c/d路径的d文件夹有没有如果没有继续dirname($dir)判断扮闷御a/b/c路径的c文厅岩件夹有没有依此类推直到dirname($dir)判断a路径的时候不存在执行当前递归层罩如的mkdir($

2024-12-02 00:02:31
php中的回调函数到底什么意思,函数array_udiff的执行过程是什么样的,以下代码是怎么执行的
php中的回调函数到底什么意思,函数array_udiff的执行过程是什么样的,以下代码是怎么执行的

php中的回调函数到底什么意思,函数array_udiff的执行过程是什么样的,以下代码是怎么执行的数据的比较是用array_udiff()函数的function进行的。function函数带有两个将进行比较的参数运孝好。如果第一个参数小于第二个参数,则函数返回一个负数,如果两个参数相等,则要返回0,如果第一个参数大于第二个,则返回一个正数。该函数旁铅只进行键值的比较,不比较键名。如"

2024-08-08 12:24:31