【php】ELF php 可执行程序运行后加载重型脚本的过程

ELF php 可执行程序运行后加载重型脚本的过程

北风之神发布于 1 月 28 日

PS:本文就是用于回答我朋友的问题【本文以渣男角度陈述】
重型:是指php 可执行文件运行后,会调用大量的文件操作函数【如open,read等】读取大量的php文本文件【只不过老实人喜欢叫php源码文件,并且老实人喜欢重型脚本称为框架】
【本文不按套路陈述用法也不讲用法,不适合小白,本文只是传达一个标题的概念】
本文的环境:linux+php+nginx 其它没有了【本人是渣男,不会遵守任何官方相应条款】
【本文需要你看完以自己去架着轰炸机去测试php-fpm】
安装流程
1 去这里下载 【当然你老实本份就composer create-project laravel/laravel,我是渣男不老实,听说人家不喜欢老实人】
【php】ELF php 可执行程序运行后加载重型脚本的过程

【php】ELF php 可执行程序运行后加载重型脚本的过程
2 安装
【php】ELF php 可执行程序运行后加载重型脚本的过程

它安装时会读取composer.json等文件去下载类库文件,所以你如果安装时遇到各种问题,可以修改composer.json决定要装什么东西,人家说php版本必须是高版本才能装laravel8【这一般是老实的人才会遵守的条款,我是渣男,肯定不会遵守老外的条款】

3 然后瞎配置一下nginx[它会把数据发给php]
【php】ELF php 可执行程序运行后加载重型脚本的过程

4 启动服务
nginx只是转发请求给php-fpm处理而已,毕竟这是老传统了,当你愿意遵守这个传统条款时。
【php】ELF php 可执行程序运行后加载重型脚本的过程

5 然后我先老实的访问一下
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

6 以上是老实做法,下面我们根据提示调整参数
这些配置参数不用记,记来干什么?用来面试别人?真是老实人。
【php】ELF php 可执行程序运行后加载重型脚本的过程

然后重启服务 ,再来老实的访问
【php】ELF php 可执行程序运行后加载重型脚本的过程

然后出现这种,一般这种情况老实人就比较紧张了,怕人家强暴一样的紧张。我们现在看一下php-fpm进程执行的情况

【php】ELF php 可执行程序运行后加载重型脚本的过程

上面图中我圈出的就是重点,你硬是看不懂,我没有办法了。 要不599找我手把手教你吧。^_^

接下来根据它的提示调整一下
【php】ELF php 可执行程序运行后加载重型脚本的过程

我们调整好以后,再访问
【php】ELF php 可执行程序运行后加载重型脚本的过程

这个时候你也别紧张兮兮,我们看一下php-fpm运行laravel的情况再说话,不要像怨妇一样上来就是啊,怎么办?

【php】ELF php 可执行程序运行后加载重型脚本的过程

我们看到这php-fpm在运行laravel时,打开的脚本文件那是相当多,我这里只是截图部分,为了处理一个小小的访问,它打开一堆脚本文件,后面它直接去访问500这个文件了。很不给面子。

【php】ELF php 可执行程序运行后加载重型脚本的过程

【php】ELF php 可执行程序运行后加载重型脚本的过程

7 接下来,我们一步步的看一下我运行,php-fpm为了处理这个重型框架到底加载了多少php脚本文件【部分截图】【自己用电脑看,不要用小的可怜兮兮的手机看,渣男就应该用PC看】

【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

路由注册服务
【php】ELF php 可执行程序运行后加载重型脚本的过程

Kernel 核心文件
【php】ELF php 可执行程序运行后加载重型脚本的过程

好了,我们不是要研究框架的运行机制,我们现在先看一下500报错页面的加载
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

大家可以看到,一个小小的业务需求,它就加载一大堆的【open,read,lstat,close文件,这些操作都是要去磁盘里读取,框架越重,php-fpm处理时间越长,当然了php-fpm本身是个守护进程,接收一次tcp连接和数据传输后,它就断开了】在这里大家可以自行的进行测试,从框架的index.php到最后输出,打开了N个文件,都是要操作磁盘,读取的数据当然是要占用内存,c会申请一堆内存再去处理这些脚本的语法,进行解析。

8 下面随便给你们看下问题所在
【php】ELF php 可执行程序运行后加载重型脚本的过程

看一下它写的内容就知道问题在哪里了
write(4, "[2021-01-29 10:47:15] production.ERROR: No application encryption key has been specified. {"exception":"[object] (I
这句话看不懂,那就比较老火了。
你们有兴趣就去看一下它的加密注册服务代码
【php】ELF php 可执行程序运行后加载重型脚本的过程

解决一下
【php】ELF php 可执行程序运行后加载重型脚本的过程

我不老实,不按上面解决,按渣男方式解决
【php】ELF php 可执行程序运行后加载重型脚本的过程
再访问时
【php】ELF php 可执行程序运行后加载重型脚本的过程
手动写一个
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

下面测试一下

【php】ELF php 可执行程序运行后加载重型脚本的过程
改成这吊样
【php】ELF php 可执行程序运行后加载重型脚本的过程

请求过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

最后一把
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
//请求
【php】ELF php 可执行程序运行后加载重型脚本的过程

路由注册
【php】ELF php 可执行程序运行后加载重型脚本的过程

控制器调度
【php】ELF php 可执行程序运行后加载重型脚本的过程

响应
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

php-fpm和nginx运行时系统调用情况【响应北风之神内容的分析】
【统计误差很小,大家可以自行统计】
1 系统调用时产生的记录日志大小
【php】ELF php 可执行程序运行后加载重型脚本的过程
php-fpm运行时的系统调用产生:1.4M
ngninx:1.5M

【php】ELF php 可执行程序运行后加载重型脚本的过程

open 打开php脚本文件次数
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

open 打开php脚本后read读取脚本内容次数
【php】ELF php 可执行程序运行后加载重型脚本的过程

read php脚本时大概读取多少个字节
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

根据公式换算一下:
1M=1024KB
1KB=1024Byte
1M=1024*1024=1000,000
1362477=1330KB=1M

php-fpm响应给nginx字节数
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
nginx响应给用户的字节数
【php】ELF php 可执行程序运行后加载重型脚本的过程

【php】ELF php 可执行程序运行后加载重型脚本的过程

phpc后端

阅读 19更新于 今天 02:30

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议

avatar

北风之神

北风之神核潜战略专家

85 声望

11 粉丝

0 条评论

得票时间

avatar

北风之神

北风之神核潜战略专家

85 声望

11 粉丝

宣传栏

PS:本文就是用于回答我朋友的问题【本文以渣男角度陈述】
重型:是指php 可执行文件运行后,会调用大量的文件操作函数【如open,read等】读取大量的php文本文件【只不过老实人喜欢叫php源码文件,并且老实人喜欢重型脚本称为框架】
【本文不按套路陈述用法也不讲用法,不适合小白,本文只是传达一个标题的概念】
本文的环境:linux+php+nginx 其它没有了【本人是渣男,不会遵守任何官方相应条款】
【本文需要你看完以自己去架着轰炸机去测试php-fpm】
安装流程
1 去这里下载 【当然你老实本份就composer create-project laravel/laravel,我是渣男不老实,听说人家不喜欢老实人】
【php】ELF php 可执行程序运行后加载重型脚本的过程

【php】ELF php 可执行程序运行后加载重型脚本的过程
2 安装
【php】ELF php 可执行程序运行后加载重型脚本的过程

它安装时会读取composer.json等文件去下载类库文件,所以你如果安装时遇到各种问题,可以修改composer.json决定要装什么东西,人家说php版本必须是高版本才能装laravel8【这一般是老实的人才会遵守的条款,我是渣男,肯定不会遵守老外的条款】

3 然后瞎配置一下nginx[它会把数据发给php]
【php】ELF php 可执行程序运行后加载重型脚本的过程

4 启动服务
nginx只是转发请求给php-fpm处理而已,毕竟这是老传统了,当你愿意遵守这个传统条款时。
【php】ELF php 可执行程序运行后加载重型脚本的过程

5 然后我先老实的访问一下
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

6 以上是老实做法,下面我们根据提示调整参数
这些配置参数不用记,记来干什么?用来面试别人?真是老实人。
【php】ELF php 可执行程序运行后加载重型脚本的过程

然后重启服务 ,再来老实的访问
【php】ELF php 可执行程序运行后加载重型脚本的过程

然后出现这种,一般这种情况老实人就比较紧张了,怕人家强暴一样的紧张。我们现在看一下php-fpm进程执行的情况

【php】ELF php 可执行程序运行后加载重型脚本的过程

上面图中我圈出的就是重点,你硬是看不懂,我没有办法了。 要不599找我手把手教你吧。^_^

接下来根据它的提示调整一下
【php】ELF php 可执行程序运行后加载重型脚本的过程

我们调整好以后,再访问
【php】ELF php 可执行程序运行后加载重型脚本的过程

这个时候你也别紧张兮兮,我们看一下php-fpm运行laravel的情况再说话,不要像怨妇一样上来就是啊,怎么办?

【php】ELF php 可执行程序运行后加载重型脚本的过程

我们看到这php-fpm在运行laravel时,打开的脚本文件那是相当多,我这里只是截图部分,为了处理一个小小的访问,它打开一堆脚本文件,后面它直接去访问500这个文件了。很不给面子。

【php】ELF php 可执行程序运行后加载重型脚本的过程

【php】ELF php 可执行程序运行后加载重型脚本的过程

7 接下来,我们一步步的看一下我运行,php-fpm为了处理这个重型框架到底加载了多少php脚本文件【部分截图】【自己用电脑看,不要用小的可怜兮兮的手机看,渣男就应该用PC看】

【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

路由注册服务
【php】ELF php 可执行程序运行后加载重型脚本的过程

Kernel 核心文件
【php】ELF php 可执行程序运行后加载重型脚本的过程

好了,我们不是要研究框架的运行机制,我们现在先看一下500报错页面的加载
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

大家可以看到,一个小小的业务需求,它就加载一大堆的【open,read,lstat,close文件,这些操作都是要去磁盘里读取,框架越重,php-fpm处理时间越长,当然了php-fpm本身是个守护进程,接收一次tcp连接和数据传输后,它就断开了】在这里大家可以自行的进行测试,从框架的index.php到最后输出,打开了N个文件,都是要操作磁盘,读取的数据当然是要占用内存,c会申请一堆内存再去处理这些脚本的语法,进行解析。

8 下面随便给你们看下问题所在
【php】ELF php 可执行程序运行后加载重型脚本的过程

看一下它写的内容就知道问题在哪里了
write(4, "[2021-01-29 10:47:15] production.ERROR: No application encryption key has been specified. {"exception":"[object] (I
这句话看不懂,那就比较老火了。
你们有兴趣就去看一下它的加密注册服务代码
【php】ELF php 可执行程序运行后加载重型脚本的过程

解决一下
【php】ELF php 可执行程序运行后加载重型脚本的过程

我不老实,不按上面解决,按渣男方式解决
【php】ELF php 可执行程序运行后加载重型脚本的过程
再访问时
【php】ELF php 可执行程序运行后加载重型脚本的过程
手动写一个
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

下面测试一下

【php】ELF php 可执行程序运行后加载重型脚本的过程
改成这吊样
【php】ELF php 可执行程序运行后加载重型脚本的过程

请求过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

最后一把
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
//请求
【php】ELF php 可执行程序运行后加载重型脚本的过程

路由注册
【php】ELF php 可执行程序运行后加载重型脚本的过程

控制器调度
【php】ELF php 可执行程序运行后加载重型脚本的过程

响应
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

php-fpm和nginx运行时系统调用情况【响应北风之神内容的分析】
【统计误差很小,大家可以自行统计】
1 系统调用时产生的记录日志大小
【php】ELF php 可执行程序运行后加载重型脚本的过程
php-fpm运行时的系统调用产生:1.4M
ngninx:1.5M

【php】ELF php 可执行程序运行后加载重型脚本的过程

open 打开php脚本文件次数
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

open 打开php脚本后read读取脚本内容次数
【php】ELF php 可执行程序运行后加载重型脚本的过程

read php脚本时大概读取多少个字节
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程

根据公式换算一下:
1M=1024KB
1KB=1024Byte
1M=1024*1024=1000,000
1362477=1330KB=1M

php-fpm响应给nginx字节数
【php】ELF php 可执行程序运行后加载重型脚本的过程
【php】ELF php 可执行程序运行后加载重型脚本的过程
nginx响应给用户的字节数
【php】ELF php 可执行程序运行后加载重型脚本的过程

【php】ELF php 可执行程序运行后加载重型脚本的过程

以上是 【php】ELF php 可执行程序运行后加载重型脚本的过程 的全部内容, 来源链接: utcz.com/a/110051.html

回到顶部