当前位置:首页 > 技术 >

php代码执行原理(php代码运行的方法)

来源:原点资讯(www.yd166.com)时间:2023-04-17 04:06:06作者:YD166手机阅读>>

php代码执行原理,php代码运行的方法(1)

前言

针对不同平台/语言下的命令执行是不相同的,存在很大的差异性。因此,这里对不同平台/语言下的命令执行函数进行深入的探究分析。

文章开头会对不同平台(Linux、Windows)下:终端的指令执行、语言(PHP、Java、Python)的命令执行进行介绍分析。后面,主要以PHP语言为对象,针对不同平台,对命令执行函数进行底层深入分析,这个过程包括:PHP内核源码的编译、运行、调试、审计等,其它语言分析原理思路类似。19

该系列分析文章主要分为四部分,如下:

  • 第一部分:命令执行底层原理探究-PHP (一)

针对不同平台(Linux、Windows)下:终端的指令执行、语言(PHP、Java、Python)的命令执行进行介绍分析。

  • 第二部分:命令执行底层原理探究-PHP (二)

主要以PHP语言为对象,针对不同平台,进行环境准备、PHP内核源码的编译、运行、调试等。

  • 第三部分:命令执行底层原理探究-PHP (三)

针对Windows平台下,PHP命令执行函数的底层原理分析。

  • 第四部分:命令执行底层原理探究-PHP (四)

针对Linux平台下,PHP命令执行函数的底层原理分析。

本文《 命令执行底层原理探究-PHP (一) 》主要讲述的是第一部分:针对不同平台(Linux、Windows)下:终端的指令执行、语言(PHP、Java、Python)的命令执行进行介绍分析。

平台语言不同平台终端指令执行

不同平台终端中执行的命令方式一般有两种:自身终端封装的指令(内置)、终端下调用其它目录下的可执行程序(外部)。

Linux

Linux下终端一般为/bin/bash、/bin/sh、/bin/zsh等,这里以bash终端为例测试。

以Linux为例【Windows等平台原理同Linux类似】,Linux下终端内建(内置)的指令类型为:shell built-in command。

所谓shell built-in command,就是那些内建在linux shell里面的command指令。

通常情况下,在linux shell下面执行一个command指令,shell会查找command是否为built-in command类型,对于built-in command指令类型,shell会自己解释执行,而无需fork一个child process子进程来执行该command指令;对于,不是built-in command指令类型,shell会从环境变量中按顺序搜索该command指令,如果能查到则会fork一个child process子进程来执行该command指令;然而,对于找不到的command指令,一般为:执行的指令不存在、指令未加入到环境变量中。

那么如何进行终端内建指令的判断与查看呢,对于内建指令可以使用type指令去判断

┌──(roottoor)-[~/桌面] └─# type echo echo is a shell builtin ┌──(roottoor)-[~/桌面] └─# type whoami whoami is /usr/bin/whoami ┌──(roottoor)-[~/桌面] └─#

或着也可以使用其它指令进行查找判断:which、where

┌──(roottoor)-[~/桌面] └─# which echo echo: shell built-in command ┌──(roottoor)-[~/桌面] └─# which whoami /usr/bin/whoami ┌──(roottoor)-[~/桌面] └─# ┌──(roottoor)-[~/桌面] └─# where echo echo: shell built-in command echo /bin/echo ┌──(roottoor)-[~/桌面] └─# where whoami /usr/bin/whoami /bin/whoami ┌──(roottoor)-[~/桌面] └─#

注意:在Linux平台,有些命令虽然为内建命令,但是系统关键目录也存在其可执行文件。

这里也可以使用enable或help指令,查看终端内建的所有指令

  • 第一种:enable指令

┌──(roottoor)-[~/桌面] └─# enable - . : [ alias autoload bg bindkey break builtin bye cd chdir command compadd comparguments compcall compctl compdescribe compfiles compgroups compquote compset comptags comptry compvalues continue declare dirs disable disown echo echotc echoti emulate enable eval exec exit export false fc fg float functions getln getopts hash history integer jobs kill let limit local log logout noglob popd print printf private pushd pushln pwd r read readonly rehash return sched set setopt shift source suspend test times trap true ttyctl type typeset ulimit umask unalias unfunction unhash unlimit unset unsetopt vared wait whence where which zcompile zformat zle zmodload zparseopts zregexparse zstat zstyle ┌──(roottoor)-[~/桌面] └─#

  • 第二种:help指令

php代码执行原理,php代码运行的方法(2)

接着对终端(内置|外置)命令进行测试,测试终端/bin/zsh:

  • 测试:whoami指令

先对whoami指令进行类型探测与指令定位查询

# 指令探测:非内置指令 ┌──(roottoor)-[~/桌面] └─# type whoami whoami is /usr/bin/whoami ┌──(roottoor)-[~/桌面] └─# # 指令定位查询:搜索发现系统特殊目录存在`whoami`可执行程序 ┌──(roottoor)-[~/桌面] └─# where whoami /usr/bin/whoami /bin/whoami ┌──(roottoor)-[~/桌面] └─#

注意:/bin目录为/usr/bin目录的链接

然后,在zsh终端写入For循环执行whoami指令查看是否为内部执行或外部调用

for n in {0..10000000}; do whoami ; done

另一侧,使用htop动态进程监控程序对该终端进行监控,可发现whoami指令并非zsh终端内置封装的指令

php代码执行原理,php代码运行的方法(3)

  • 测试:echo指令

同样,对echo指令进行类型探测与指令定位查询

# 指令探测:内置指令 ┌──(roottoor)-[~/桌面] └─# type echo echo is a shell builtin ┌──(roottoor)-[~/桌面] └─# # 指令定位查询:搜索发现系统特殊目录存在`echo`可执行程序,同时还发现存在`echo: shell built-in command`【终端内置指令】 ┌──(roottoor)-[~/桌面] └─# where echo echo: shell built-in command /usr/bin/echo /bin/echo ┌──(roottoor)-[~/桌面] └─#

然后,在zsh终端写入For循环执行echo指令查看是否为内部执行或外部调用

for n in {0..10000000}; do echo 1 ; done

另一侧,使用htop动态进程监控程序对该终端进行监控,可以发现echo指令为zsh终端内置封装的指令,并未出现外部调用

php代码执行原理,php代码运行的方法(4)

首页 123下一页

栏目热文

芦荟砍头秋季(芦荟几月份砍头最好)

芦荟砍头秋季(芦荟几月份砍头最好)

“芦荟”枝叶稀少,实施“砍头计划”,侧芽抽不断,叶片长爆盆!芦荟是一种非常有意思的盆栽植物,相信很多人都喜欢芦荟,它养在...

2023-04-17 04:05:11查看全文 >>

芦荟太高可以砍头吗(芦荟现在砍头行吗)

芦荟太高可以砍头吗(芦荟现在砍头行吗)

第一眼看到芦荟的时候,就感觉它和其它的花花草草不一样,它的叶片肥肥厚厚,水汪汪的。尤其是它每天都把叶子敲得高高的,挺得直...

2023-04-17 04:11:40查看全文 >>

芦荟侧芽太多怎么办(芦荟主干长侧芽怎么办)

芦荟侧芽太多怎么办(芦荟主干长侧芽怎么办)

喜欢养花的朋友,最好在家里养一盆芦荟,不仅美观可以装点空间,净化空气,美容美白,防治蚊虫叮咬等作用,堪称为家庭医生,而且...

2023-04-17 04:09:39查看全文 >>

芦荟砍头图片(芦荟砍头示意图)

芦荟砍头图片(芦荟砍头示意图)

阳台上栽了两盆芦荟,一样的花盆,一样的大小,起初像两个虎头虎脑的小兄弟,碧绿蓬勃,放在一起还算对称。渐渐地,长高的芦荟开...

2023-04-17 04:11:17查看全文 >>

软枣猕猴桃几年能挂果(软枣猕猴桃二年苗栽几年挂果)

软枣猕猴桃几年能挂果(软枣猕猴桃二年苗栽几年挂果)

记者 严梓宁本报讯 去年,王鹤农庄引进软枣猕猴桃试种。经过精心管理,这几天,200株软枣猕猴桃枝头挂满果实,预计9月中下...

2023-04-17 04:04:29查看全文 >>

php底层内部运行机制(php工作原理及使用方法)

php底层内部运行机制(php工作原理及使用方法)

PHP的设计理念及特点多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造成影...

2023-04-17 04:07:19查看全文 >>

php底层结构图(php 设计模式示意图)

php底层结构图(php 设计模式示意图)

作为一门动态语言,php是如何实现的,其底层机制如何,具有什么样的特点,本文深入浅出介绍了包括php设计理念、整体结构...

2023-04-17 04:03:09查看全文 >>

5年php经验找不到工作(php初学者如何找工作)

5年php经验找不到工作(php初学者如何找工作)

Python是一门很出色的胶水语言,也就是当我们有现成的组件后,Python非常适合将他们组装起来。机器学习的例子就比较...

2023-04-17 03:57:46查看全文 >>

php是不是最简单的(php用什么写的)

php是不是最简单的(php用什么写的)

此篇文章是想总结下工作中一直在用的一个简单的PHP框架,真的是超级简单,解析步骤如下:访问:https://abc.co...

2023-04-17 03:59:05查看全文 >>

php 用什么开发(php用的什么工具开发的)

php 用什么开发(php用的什么工具开发的)

首先,我们先普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如编写一篇文章,下载一首MP3...

2023-04-17 03:57:29查看全文 >>

文档排行