彻底告诉你 PHP-FPM/nginx 架构低层数据交互原理

PHP解释器骚操作

当我们要撸上LNMP或是LAMP环境时【不用具体细说了吧】,我们得装上nginx/apache+mysql【其它数据库也行】+PHP
一般来说PHP安装好【习惯源码安装了,yum或是docker或是其它骚方式安装的朋友自行查找】以后,目录是这样的【php.net官方手册有安装教程和说明,所以有空多读读php.net真的】

FPM架构下运行一个php文件后nginx如何与PHP-FPM进程管理器进行交互的【硬核跟踪数据交互】
然后bin目录有个PHP解析器【就是解析咱们撸的PHP源码】
FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

php解释器运行示例

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

解释一下代码

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]
是的,打印123

然后你觉得这有啥好说的?这么so easy,不不不,大佬,真不是这样的,下面咱们来玩玩php - r “echo 123;”后这个解释器是怎么处理的,然后又是怎么打印出123的,这个时候你就会说,切,你不会去读PHP解释器源码啊?【来来你来读https://github.com/php/php-src ,我渣渣不会^_^】

下面咱们运行:
strace ./php -r “echo 123;”
然后打印出这玩意【截图,老实说有些人截图特别小气的,真的^_^】
FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]
PS:strace 工具请百度【本人不在此细说,一般工作几年的大佬都懂,我就不在卖弄了】

strace ./php -r "echo 123;"
execve("./php", ["./php", "-r", "echo 123;"], [/* 26 vars */]) = 0   
//这里我们得了解一下shell执行命令的过程,你登录系统后,你就是通过shell这个工具来和内核交互的,所以当然是在shell下输入 strace ./php -r "echo 123;" ,然后呢简单它会fork一个进程,同时调用exec系列函数【有哪些函数,请百度或是google嘛,年轻人】  
//shell 有内置命令和外部的应用了,具体可以了解shell编程嘛 
//./php 是执行脚本的路径
//后面就是传递给脚本的参数啦
//自己用php写个脚本<?php print_r($argv); ?>然后 在控制台运行它 看看效果 
//其它撸过半点c的知道int main(int arg,char *argv[]) 啦
//所以shell命令格式就是这样骚操作的:command 选项  选项参数   参数 
//command 后面的参数就是$argv/char *argv[]接受的  
//所以你就知道在shell 运行命令,给相关参数就是为了传递参数给程序做处理的【解释这么多好累】   
//下面呢就是这个解析器运行的动态过程【进程运行的动态流程】
//有必要搞清楚程序和进程的区别  
//程序=指令的集合=静态的文件保存在磁盘上  比如咱们撸的php代码或是其它代码 
//进程=咱们run它之后,它就是进程了【程序的实例】,进程运行时肯定是从第1句运行到最后一句结束【当然啦有可能中间就结束了,或是被其它中断信号搞挂了,或是遇到exit了,或是运行错误提前挂了,有兴趣可以了解进程内存模型和运行流程】
//进程在运行的过程中呢是不是断的进行系统调用system call的,就是从用户空间跑到内核空间运行再返回
brk(0)                                  = 0x1d61000
//mmap 系统调用  功能就是搞个匿名内存映射【有兴趣可以了解一下PHP进程间通信,没有兴趣就算了】
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddd2000
//这些暂时不分析【其实撸过搞workerman开发或是swoole开发的人都懂,本人不在解释了,我们往后瞧瞧就行了,中间这一大堆你看了也头疼】
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=40380, ...}) = 0
mmap(NULL, 40380, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2fdddc8000
close(3)                                = 0
open("/lib64/libcrypt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=41080, ...}) = 0
mmap(NULL, 2318912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdd97b000
mprotect(0x7f2fdd983000, 2093056, PROT_NONE) = 0
mmap(0x7f2fddb82000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f2fddb82000
mmap(0x7f2fddb84000, 184896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fddb84000
close(3)                                = 0
open("/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p!\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=90664, ...}) = 0
mmap(NULL, 2183688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdd765000
mprotect(0x7f2fdd77a000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdd979000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f2fdd979000
close(3)                                = 0
open("/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\3209\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=111080, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddc7000
mmap(NULL, 2202264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdd54b000
mprotect(0x7f2fdd561000, 2097152, PROT_NONE) = 0
mmap(0x7f2fdd761000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7f2fdd761000
mmap(0x7f2fdd763000, 6808, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fdd763000
close(3)                                = 0
open("/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\"\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=44448, ...}) = 0
mmap(NULL, 2128952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdd343000
mprotect(0x7f2fdd34a000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdd549000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f2fdd549000
close(3)                                = 0
open("/lib64/libpng15.so.15", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0PO\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=179296, ...}) = 0
mmap(NULL, 2270248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdd118000
mprotect(0x7f2fdd141000, 2097152, PROT_NONE) = 0
mmap(0x7f2fdd341000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x29000) = 0x7f2fdd341000
close(3)                                = 0
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0pS\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1139680, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddc6000
mmap(NULL, 3150136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdce16000
mprotect(0x7f2fdcf17000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdd116000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x100000) = 0x7f2fdd116000
close(3)                                = 0
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=19776, ...}) = 0
mmap(NULL, 2109744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdcc12000
mprotect(0x7f2fdcc14000, 2097152, PROT_NONE) = 0
mmap(0x7f2fdce14000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f2fdce14000
close(3)                                = 0
open("/lib64/libnsl.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240@\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=113584, ...}) = 0
mmap(NULL, 2198200, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdc9f9000
mprotect(0x7f2fdca0f000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdcc0e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7f2fdcc0e000
mmap(0x7f2fdcc10000, 6840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fdcc10000
close(3)                                = 0
open("/lib64/libxml2.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \351\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1509376, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddc5000
mmap(NULL, 3575896, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdc68f000
mprotect(0x7f2fdc7ee000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdc9ed000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15e000) = 0x7f2fdc9ed000
mmap(0x7f2fdc9f7000, 4184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fdc9f7000
close(3)                                = 0
open("/lib64/libssl.so.10", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\253\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=470336, ...}) = 0
mmap(NULL, 2560784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdc41d000
mprotect(0x7f2fdc484000, 2097152, PROT_NONE) = 0
mmap(0x7f2fdc684000, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x67000) = 0x7f2fdc684000
close(3)                                = 0
open("/lib64/libcrypto.so.10", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\317\6\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2512448, ...}) = 0
mmap(NULL, 4588360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdbfbc000
mprotect(0x7f2fdc1f0000, 2097152, PROT_NONE) = 0
mmap(0x7f2fdc3f0000, 167936, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x234000) = 0x7f2fdc3f0000
mmap(0x7f2fdc419000, 13128, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fdc419000
close(3)                                = 0
open("/lib64/libcurl.so.4", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\242\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=435120, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddc4000
mmap(NULL, 2523432, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdbd53000
mprotect(0x7f2fdbdb8000, 2097152, PROT_NONE) = 0
mmap(0x7f2fdbfb8000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x65000) = 0x7f2fdbfb8000
mmap(0x7f2fdbfbb000, 296, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fdbfbb000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\35\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2127336, ...}) = 0
mmap(NULL, 3940800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdb990000
mprotect(0x7f2fdbb48000, 2097152, PROT_NONE) = 0
mmap(0x7f2fdbd48000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b8000) = 0x7f2fdbd48000
mmap(0x7f2fdbd4e000, 16832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fdbd4e000
close(3)                                = 0
open("/lib64/libfreebl3.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\v\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=11384, ...}) = 0
mmap(NULL, 2105536, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdb78d000
mprotect(0x7f2fdb78f000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdb98e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f2fdb98e000
close(3)                                = 0
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0m\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=144792, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddc3000
mmap(NULL, 2208904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdb571000
mprotect(0x7f2fdb588000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdb787000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7f2fdb787000
mmap(0x7f2fdb789000, 13448, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fdb789000
close(3)                                = 0
open("/lib64/liblzma.so.5", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2000\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=157424, ...}) = 0
mmap(NULL, 2249352, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdb34b000
mprotect(0x7f2fdb370000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdb56f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x24000) = 0x7f2fdb56f000
close(3)                                = 0
open("/lib64/libgssapi_krb5.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\306\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=320768, ...}) = 0
mmap(NULL, 2410688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdb0fe000
mprotect(0x7f2fdb148000, 2097152, PROT_NONE) = 0
mmap(0x7f2fdb348000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4a000) = 0x7f2fdb348000
close(3)                                = 0
open("/lib64/libkrb5.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20Z\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=963504, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddc2000
mmap(NULL, 3045888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdae16000
mprotect(0x7f2fdaeee000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdb0ed000, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd7000) = 0x7f2fdb0ed000
close(3)                                = 0
open("/lib64/libcom_err.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\25\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=15848, ...}) = 0
mmap(NULL, 2109928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fdac12000
mprotect(0x7f2fdac15000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdae14000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f2fdae14000
close(3)                                = 0
open("/lib64/libk5crypto.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300H\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=210768, ...}) = 0
mmap(NULL, 2302680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fda9df000
mprotect(0x7f2fdaa10000, 2093056, PROT_NONE) = 0
mmap(0x7f2fdac0f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x30000) = 0x7f2fdac0f000
close(3)                                = 0
open("/lib64/libidn.so.11", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0000\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=208920, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddc1000
mmap(NULL, 2302416, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fda7ac000
mprotect(0x7f2fda7de000, 2093056, PROT_NONE) = 0
mmap(0x7f2fda9dd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x31000) = 0x7f2fda9dd000
close(3)                                = 0
open("/lib64/libssh2.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320T\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=174088, ...}) = 0
mmap(NULL, 2266784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fda582000
mprotect(0x7f2fda5aa000, 2097152, PROT_NONE) = 0
mmap(0x7f2fda7aa000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f2fda7aa000
close(3)                                = 0
open("/lib64/libssl3.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\276\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=315072, ...}) = 0
mmap(NULL, 2406216, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fda336000
mprotect(0x7f2fda37d000, 2093056, PROT_NONE) = 0
mmap(0x7f2fda57c000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x46000) = 0x7f2fda57c000
mmap(0x7f2fda581000, 1864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fda581000
close(3)                                = 0
open("/lib64/libsmime3.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\222\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=164040, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddc0000
mmap(NULL, 2255608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fda10f000
mprotect(0x7f2fda133000, 2093056, PROT_NONE) = 0
mmap(0x7f2fda332000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0x7f2fda332000
close(3)                                = 0
open("/lib64/libnss3.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\226\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1236800, ...}) = 0
mmap(NULL, 3315176, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd9de5000
mprotect(0x7f2fd9f06000, 2097152, PROT_NONE) = 0
mmap(0x7f2fda106000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x121000) = 0x7f2fda106000
mmap(0x7f2fda10d000, 5608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fda10d000
close(3)                                = 0
open("/lib64/libnssutil3.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\303\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=186216, ...}) = 0
mmap(NULL, 2280192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd9bb8000
mprotect(0x7f2fd9bde000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd9ddd000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7f2fd9ddd000
close(3)                                = 0
open("/lib64/libplds4.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\17\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=15744, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddbf000
mmap(NULL, 2109728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd99b4000
mprotect(0x7f2fd99b7000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd9bb6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f2fd9bb6000
close(3)                                = 0
open("/lib64/libplc4.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\25\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=20048, ...}) = 0
mmap(NULL, 2113936, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd97af000
mprotect(0x7f2fd97b3000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd99b2000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f2fd99b2000
close(3)                                = 0
open("/lib64/libnspr4.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\314\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=251784, ...}) = 0
mmap(NULL, 2350400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd9571000
mprotect(0x7f2fd95ab000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd97aa000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x39000) = 0x7f2fd97aa000
mmap(0x7f2fd97ad000, 7488, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fd97ad000
close(3)                                = 0
open("/lib64/liblber-2.4.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\3206\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=61872, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddbe000
mmap(NULL, 2154984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd9362000
mprotect(0x7f2fd9370000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd956f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x7f2fd956f000
close(3)                                = 0
open("/lib64/libldap-2.4.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\365\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=344280, ...}) = 0
mmap(NULL, 2434416, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd910f000
mprotect(0x7f2fd915f000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd935e000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4f000) = 0x7f2fd935e000
close(3)                                = 0
open("/lib64/libkrb5support.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\2208\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=58728, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddbd000
mmap(NULL, 2152072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd8f01000
mprotect(0x7f2fd8f0e000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd910d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7f2fd910d000
close(3)                                = 0
open("/lib64/libkeyutils.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\25\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=15688, ...}) = 0
mmap(NULL, 2109720, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd8cfd000
mprotect(0x7f2fd8d00000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd8eff000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f2fd8eff000
close(3)                                = 0
open("/lib64/libsasl2.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`K\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=121296, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddbc000
mmap(NULL, 2213960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd8ae0000
mprotect(0x7f2fd8afc000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd8cfb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7f2fd8cfb000
close(3)                                = 0
open("/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300j\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=155744, ...}) = 0
mmap(NULL, 2255216, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd88b9000
mprotect(0x7f2fd88dd000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd8adc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0x7f2fd8adc000
mmap(0x7f2fd8ade000, 6512, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fd8ade000
close(3)                                = 0
open("/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\25\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=402384, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddbb000
mmap(NULL, 2494984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd8657000
mprotect(0x7f2fd86b7000, 2097152, PROT_NONE) = 0
mmap(0x7f2fd88b7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x60000) = 0x7f2fd88b7000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddba000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddb9000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddb8000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddb7000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddb5000
arch_prctl(ARCH_SET_FS, 0x7f2fdddb5840) = 0
mprotect(0x7f2fdbd48000, 16384, PROT_READ) = 0
mprotect(0x7f2fdb787000, 4096, PROT_READ) = 0
mprotect(0x7f2fd88b7000, 4096, PROT_READ) = 0
mprotect(0x7f2fdce14000, 4096, PROT_READ) = 0
mprotect(0x7f2fd8adc000, 4096, PROT_READ) = 0
mprotect(0x7f2fdb98e000, 4096, PROT_READ) = 0
mprotect(0x7f2fddb82000, 4096, PROT_READ) = 0
mprotect(0x7f2fdd761000, 4096, PROT_READ) = 0
mprotect(0x7f2fd8cfb000, 4096, PROT_READ) = 0
mprotect(0x7f2fd8eff000, 4096, PROT_READ) = 0
mprotect(0x7f2fd910d000, 4096, PROT_READ) = 0
mprotect(0x7f2fdd979000, 4096, PROT_READ) = 0
mprotect(0x7f2fdd549000, 4096, PROT_READ) = 0
mprotect(0x7f2fd97aa000, 4096, PROT_READ) = 0
mprotect(0x7f2fd9bb6000, 4096, PROT_READ) = 0
mprotect(0x7f2fd99b2000, 4096, PROT_READ) = 0
mprotect(0x7f2fd9ddd000, 28672, PROT_READ) = 0
mprotect(0x7f2fda106000, 20480, PROT_READ) = 0
mprotect(0x7f2fda57c000, 16384, PROT_READ) = 0
mprotect(0x7f2fda332000, 12288, PROT_READ) = 0
mprotect(0x7f2fd956f000, 4096, PROT_READ) = 0
stat("/etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned", 0x7ffca19cb170) = -1 ENOENT (No such file or directory)
mprotect(0x7f2fd935e000, 12288, PROT_READ) = 0
mprotect(0x7f2fdc3f0000, 114688, PROT_READ) = 0
mprotect(0x7f2fdae14000, 4096, PROT_READ) = 0
mprotect(0x7f2fdac0f000, 8192, PROT_READ) = 0
mprotect(0x7f2fdb0ed000, 57344, PROT_READ) = 0
mprotect(0x7f2fdb348000, 4096, PROT_READ) = 0
mprotect(0x7f2fdc684000, 16384, PROT_READ) = 0
mprotect(0x7f2fda7aa000, 4096, PROT_READ) = 0
mprotect(0x7f2fda9dd000, 4096, PROT_READ) = 0
mprotect(0x7f2fdb56f000, 4096, PROT_READ) = 0
mprotect(0x7f2fdbfb8000, 8192, PROT_READ) = 0
mprotect(0x7f2fdd116000, 4096, PROT_READ) = 0
mprotect(0x7f2fdc9ed000, 32768, PROT_READ) = 0
mprotect(0x7f2fdcc0e000, 4096, PROT_READ) = 0
mprotect(0x7f2fdd341000, 4096, PROT_READ) = 0
mprotect(0xdf3000, 741376, PROT_READ)   = 0
mprotect(0x7f2fdddd3000, 4096, PROT_READ) = 0
munmap(0x7f2fdddc8000, 40380)           = 0
set_tid_address(0x7f2fdddb5b10)         = 21621
set_robust_list(0x7f2fdddb5b20, 24)     = 0
rt_sigaction(SIGRTMIN, {0x7f2fdb5777e0, [], SA_RESTORER|SA_SIGINFO, 0x7f2fdb5805e0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7f2fdb577870, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7f2fdb5805e0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
statfs("/sys/fs/selinux", 0x7ffca19cc3d0) = -1 ENOENT (No such file or directory)
statfs("/selinux", 0x7ffca19cc3d0)      = -1 ENOENT (No such file or directory)
brk(0)                                  = 0x1d61000
brk(0x1d82000)                          = 0x1d82000
open("/proc/filesystems", O_RDONLY)     = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddd1000
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tr"..., 1024) = 307
stat("/etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned", 0x7ffca19cc240) = -1 ENOENT (No such file or directory)
read(3, "", 1024)                       = 0
close(3)                                = 0
munmap(0x7f2fdddd1000, 4096)            = 0
access("/etc/selinux/config", F_OK)     = 0
open("/etc/pki/tls/legacy-settings", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/system-fips", F_OK)        = -1 ENOENT (No such file or directory)
rt_sigaction(SIGPIPE, {SIG_IGN, [PIPE], SA_RESTORER|SA_RESTART, 0x7f2fdb9c5270}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGHUP, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGILL, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTRAP, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGABRT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGBUS, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGFPE, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGKILL, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGUSR1, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSEGV, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGUSR2, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPIPE, NULL, {SIG_IGN, [PIPE], SA_RESTORER|SA_RESTART, 0x7f2fdb9c5270}, 8) = 0
rt_sigaction(SIGALRM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSTKFLT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGCONT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSTOP, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTSTP, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTTIN, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTTOU, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGURG, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGXCPU, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGXFSZ, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGVTALRM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPROF, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGWINCH, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGIO, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPWR, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSYS, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_2, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_3, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_4, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_5, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_6, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_7, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_8, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_9, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_10, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_11, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_12, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_13, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_14, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_15, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_16, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_17, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_18, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_19, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_20, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_21, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_22, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_23, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_24, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_25, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_26, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_27, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_28, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_29, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_30, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_31, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGRT_32, NULL, {SIG_DFL, [], 0}, 8) = 0
mmap(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fd8457000
munmap(0x7f2fd8457000, 2097152)         = 0
mmap(NULL, 4190208, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fd8258000
munmap(0x7f2fd8258000, 1736704)         = 0
munmap(0x7f2fd8600000, 356352)          = 0
madvise(0x7f2fd8400000, 2097152, MADV_HUGEPAGE) = 0
getcwd("/home/soft/php/bin", 4096)      = 19
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=106070960, ...}) = 0
mmap(NULL, 106070960, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2fd1ed7000
close(3)                                = 0
open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=388, ...}) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=388, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddd1000
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\2\0\0\0\0"..., 4096) = 388
lseek(3, -240, SEEK_CUR)                = 148
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0\0\0\3\0\0\0\0"..., 4096) = 240
close(3)                                = 0
munmap(0x7f2fdddd1000, 4096)            = 0
getcwd("/home/soft/php/bin", 4096)      = 19
lstat("/home/soft/php/bin/./php", {st_mode=S_IFREG|0755, st_size=39355536, ...}) = 0
lstat("/home/soft/php/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/soft/php", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/soft", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
access("/home/soft/php/bin/php", X_OK)  = 0
open("/home/soft/php/bin/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/soft/php/lib/php-cli.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/soft/php/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/soft/php/lib/php.ini", O_RDONLY) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0x7ffca19c9d00) = -1 ENOTTY (Inappropriate ioctl for device)
fstat(3, {st_mode=S_IFREG|0644, st_size=70281, ...}) = 0
mmap(NULL, 70313, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2fddda3000
lseek(3, 0, SEEK_CUR)                   = 0
brk(0)                                  = 0x1d82000
brk(0x1da3000)                          = 0x1da3000
munmap(0x7f2fddda3000, 70313)           = 0
close(3)                                = 0
mmap(NULL, 323584, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fddd66000
brk(0)                                  = 0x1da3000
brk(0x1dc4000)                          = 0x1dc4000
brk(0)                                  = 0x1dc4000
brk(0x1df2000)                          = 0x1df2000
futex(0x7f2fdce150d0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/home/soft/php/lib/php/extensions/no-debug-non-zts-20170718/fileinfo", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/home/soft/php/lib/php/extensions/no-debug-non-zts-20170718/fileinfo.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200[\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=5529736, ...}) = 0
mmap(NULL, 7151080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd1805000
mprotect(0x7f2fd1cd5000, 2097152, PROT_NONE) = 0
mmap(0x7f2fd1ed5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4d0000) = 0x7f2fd1ed5000
close(3)                                = 0
mprotect(0x7f2fd1ed5000, 4096, PROT_READ) = 0
open("/home/soft/php/lib/php/extensions/no-debug-non-zts-20170718/swoole", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/home/soft/php/lib/php/extensions/no-debug-non-zts-20170718/swoole.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\27\4\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=12296584, ...}) = 0
mmap(NULL, 4166792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd140b000
mprotect(0x7f2fd1577000, 2097152, PROT_NONE) = 0
mmap(0x7f2fd1777000, 86016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16c000) = 0x7f2fd1777000
mmap(0x7f2fd178c000, 492680, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fd178c000
close(3)                                = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=40380, ...}) = 0
mmap(NULL, 40380, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2fdddc8000
close(3)                                = 0
open("/lib64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \262\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=991616, ...}) = 0
mmap(NULL, 3171168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd1104000
mprotect(0x7f2fd11ed000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd13ec000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x7f2fd13ec000
mmap(0x7f2fd13f6000, 82784, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fd13f6000
close(3)                                = 0
open("/lib64/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220*\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=88776, ...}) = 0
mmap(NULL, 2184192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd0eee000
mprotect(0x7f2fd0f03000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd1102000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f2fd1102000
close(3)                                = 0
mprotect(0x7f2fd1102000, 4096, PROT_READ) = 0
mprotect(0x7f2fd13ec000, 32768, PROT_READ) = 0
mprotect(0x7f2fd1777000, 61440, PROT_READ) = 0
futex(0x7f2fd14088ac, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f2fd14088b8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
munmap(0x7f2fdddc8000, 40380)           = 0
open("/home/soft/php/lib/php/extensions/no-debug-non-zts-20170718/redis", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/home/soft/php/lib/php/extensions/no-debug-non-zts-20170718/redis.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\204\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1839584, ...}) = 0
mmap(NULL, 2577136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd0c78000
mprotect(0x7f2fd0ce4000, 2097152, PROT_NONE) = 0
mmap(0x7f2fd0ee4000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6c000) = 0x7f2fd0ee4000
mmap(0x7f2fd0eed000, 752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fd0eed000
close(3)                                = 0
mprotect(0x7f2fd0ee4000, 20480, PROT_READ) = 0
open("/home/soft/php/lib/php/extensions/no-debug-non-zts-20170718/zmq", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/home/soft/php/lib/php/extensions/no-debug-non-zts-20170718/zmq.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20R\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=351416, ...}) = 0
mmap(NULL, 2183496, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd0a62000
mprotect(0x7f2fd0a76000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd0c75000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x7f2fd0c75000
mmap(0x7f2fd0c77000, 328, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fd0c77000
close(3)                                = 0
open("/home/soft/zmq/lib/tls/x86_64/libzmq.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/soft/zmq/lib/tls/x86_64", 0x7ffca19ca4a0) = -1 ENOENT (No such file or directory)
open("/home/soft/zmq/lib/tls/libzmq.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/soft/zmq/lib/tls", 0x7ffca19ca4a0) = -1 ENOENT (No such file or directory)
open("/home/soft/zmq/lib/x86_64/libzmq.so.4", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/soft/zmq/lib/x86_64", 0x7ffca19ca4a0) = -1 ENOENT (No such file or directory)
open("/home/soft/zmq/lib/libzmq.so.4", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\274\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=3330552, ...}) = 0
mmap(NULL, 2425920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd0811000
mprotect(0x7f2fd085d000, 2097152, PROT_NONE) = 0
mmap(0x7f2fd0a5d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4c000) = 0x7f2fd0a5d000
close(3)                                = 0
mprotect(0x7f2fd0a5d000, 16384, PROT_READ) = 0
mprotect(0x7f2fd0c75000, 4096, PROT_READ) = 0
open("/home/soft/php/lib/php/extensions/no-debug-non-zts-20170718/say.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\n\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=31480, ...}) = 0
mmap(NULL, 2105616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd060e000
mprotect(0x7f2fd060f000, 2097152, PROT_NONE) = 0
mmap(0x7f2fd080f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f2fd080f000
close(3)                                = 0
mprotect(0x7f2fd080f000, 4096, PROT_READ) = 0
open("/home/soft/php/lib/php/extensions/no-debug-non-zts-20170718/yaf.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\17\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1428488, ...}) = 0
mmap(NULL, 2359656, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2fd03cd000
mprotect(0x7f2fd0408000, 2093056, PROT_NONE) = 0
mmap(0x7f2fd0607000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a000) = 0x7f2fd0607000
mmap(0x7f2fd060d000, 360, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2fd060d000
close(3)                                = 0
mprotect(0x7f2fd0607000, 12288, PROT_READ) = 0
brk(0)                                  = 0x1df2000
brk(0x1e13000)                          = 0x1e13000
futex(0x7f2fdc9f7d48, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/etc/pki/tls/openssl.cnf", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=10923, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fdddd1000
read(3, "#\n# OpenSSL example configuratio"..., 4096) = 4096
read(3, "ancient versions of Netscape cra"..., 4096) = 4096
read(3, "gainst PKIX guidelines but some "..., 4096) = 2731
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x7f2fdddd1000, 4096)            = 0
brk(0)                                  = 0x1e13000
brk(0x1e34000)                          = 0x1e34000
mmap(NULL, 151552, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fddd41000
gettid()                                = 21621
rt_sigaction(SIGPIPE, {SIG_IGN, [], SA_RESTORER, 0x7f2fdb9c5270}, NULL, 8) = 0
brk(0)                                  = 0x1e34000
brk(0x1e55000)                          = 0x1e55000
brk(0)                                  = 0x1e55000
brk(0x1e76000)                          = 0x1e76000
brk(0)                                  = 0x1e76000
brk(0x1e97000)                          = 0x1e97000
brk(0)                                  = 0x1e97000
brk(0x1eb8000)                          = 0x1eb8000
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
brk(0)                                  = 0x1eb8000
brk(0x1ed9000)                          = 0x1ed9000
mmap(NULL, 299008, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fddcf8000
munmap(0x7f2fddd41000, 151552)          = 0
brk(0)                                  = 0x1ed9000
brk(0x1efa000)                          = 0x1efa000
brk(0)                                  = 0x1efa000
brk(0x1f1b000)                          = 0x1f1b000
brk(0)                                  = 0x1f1b000
brk(0x1f5b000)                          = 0x1f5b000
open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3
read(3, "0\n", 8192)                    = 2
close(3)                                = 0
uname({sys="Linux", node="iz2zegqaeolqftvinr8is3z", ...}) = 0
mmap(NULL, 2097248, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0) = 0x7f2fd01cc000
getrlimit(RLIMIT_NOFILE, {rlim_cur=262140, rlim_max=262140}) = 0
mmap(NULL, 184320, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fddccb000
access("/tmp", R_OK)                    = 0
brk(0)                                  = 0x1f5b000
brk(0x1f7c000)                          = 0x1f7c000
brk(0)                                  = 0x1f7c000
brk(0x1f9d000)                          = 0x1f9d000
brk(0)                                  = 0x1f9d000
brk(0x1fbe000)                          = 0x1fbe000
eventfd2(0, 0)                          = 3
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
fcntl(3, F_GETFL)                       = 0x802 (flags O_RDWR|O_NONBLOCK)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
brk(0)                                  = 0x1fbe000
brk(0x1fe1000)                          = 0x1fe1000
rt_sigaction(SIGPROF, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPROF, {0x85b170, ~[ILL TRAP ABRT BUS FPE KILL SEGV CONT STOP TSTP TTIN TTOU SYS RTMIN RT_1], SA_RESTORER|SA_SIGINFO, 0x7f2fdb9c5270}, NUL                                                                                    L, 8) = 0
rt_sigaction(SIGHUP, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGHUP, {0x85b170, ~[ILL TRAP ABRT BUS FPE KILL SEGV CONT STOP TSTP TTIN TTOU SYS RTMIN RT_1], SA_RESTORER|SA_SIGINFO, 0x7f2fdb9c5270}, NULL                                                                                    , 8) = 0
rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, {0x85b170, ~[ILL TRAP ABRT BUS FPE KILL SEGV CONT STOP TSTP TTIN TTOU SYS RTMIN RT_1], SA_RESTORER|SA_SIGINFO, 0x7f2fdb9c5270}, NULL                                                                                    , 8) = 0
rt_sigaction(SIGQUIT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, {0x85b170, ~[ILL TRAP ABRT BUS FPE KILL SEGV CONT STOP TSTP TTIN TTOU SYS RTMIN RT_1], SA_RESTORER|SA_SIGINFO, 0x7f2fdb9c5270}, NUL                                                                                    L, 8) = 0
rt_sigaction(SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTERM, {0x85b170, ~[ILL TRAP ABRT BUS FPE KILL SEGV CONT STOP TSTP TTIN TTOU SYS RTMIN RT_1], SA_RESTORER|SA_SIGINFO, 0x7f2fdb9c5270}, NUL                                                                                    L, 8) = 0
rt_sigaction(SIGUSR1, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGUSR1, {0x85b170, ~[ILL TRAP ABRT BUS FPE KILL SEGV CONT STOP TSTP TTIN TTOU SYS RTMIN RT_1], SA_RESTORER|SA_SIGINFO, 0x7f2fdb9c5270}, NUL                                                                                    L, 8) = 0
rt_sigaction(SIGUSR2, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGUSR2, {0x85b170, ~[ILL TRAP ABRT BUS FPE KILL SEGV CONT STOP TSTP TTIN TTOU SYS RTMIN RT_1], SA_RESTORER|SA_SIGINFO, 0x7f2fdb9c5270}, NUL                                                                                    L, 8) = 0
rt_sigaction(SIGPROF, {0x85b170, ~[ILL TRAP ABRT BUS FPE KILL SEGV CONT STOP TSTP TTIN TTOU SYS RTMIN RT_1], SA_RESTORER|SA_SIGINFO, 0x7f2fdb9c5270}, NUL                                                                                    L, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0
mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2fddd56000
brk(0)                                  = 0x1fe1000
brk(0x2002000)                          = 0x2002000
fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
lseek(0, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
lseek(1, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
lseek(2, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
//就是地方,调用write 函数 向文件描述符1写数据
//0=标准输入设备【不清楚可以看看本人对workerman的注释】
//1=输出设备
//2=输出设备
//文件描述符:是指某进程正在访问的文件,由内核返回【比如socket 文件由内核返回】
//就是把123 往输出设备屏蔽打印出来而已
//前面的代码是php解析器运行时各种系统调用
write(1, "123", 3123)                      = 3
//下面是关闭相应的文件和释放共享内存操作以及退出
close(2)                                = 0
close(1)                                = 0
close(0)                                = 0
munmap(0x7f2fd03cd000, 2359656)         = 0
munmap(0x7f2fd060e000, 2105616)         = 0
close(3)                                = 0
munmap(0x7f2fd0a62000, 2183496)         = 0
munmap(0x7f2fd0811000, 2425920)         = 0
munmap(0x7f2fd0c78000, 2577136)         = 0
munmap(0x7f2fddccb000, 184320)          = 0
munmap(0x7f2fd01cc000, 2097248)         = 0
munmap(0x7f2fd140b000, 4166792)         = 0
munmap(0x7f2fd1805000, 7151080)         = 0
munmap(0x7f2fddd56000, 65536)           = 0
munmap(0x7f2fddcf8000, 299008)          = 0
munmap(0x7f2fd8400000, 2097152)         = 0
munmap(0x7f2fddd66000, 323584)          = 0
//进程退出操作【咱们调用的exit或是_exit就是调用exit_group】
exit_group(0)                           = ?

上面就是php解释器运行代码时的流程【进程运行流程】

下面我们运行php test.php的结果

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

到这里大家多少了解一些了,这个php解释器就是读取我们撸好的代码,然后这样这样【哪样?自己看嘛 对于大佬分分钟也了解了^_^】然后输出内容了。

PHP-FPM进程管理器+nginx服务

这个玩意是怎么运行的,一般会说去读源码,去百度【然后找出大堆重复的CSDN^_^】,分分钟就知道了,我这里就直接做测试它是如何运行的,下面的分析比较硬核,请做好心理准备

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

  1. ./php-fpm启动
  2. nginx 启动
    然后运行如下
    FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

然后它们都监听了9000端口和2347端口【服务器处于LISTEN状态】,这个时候我们去看一下PHP-FPM到底以多少个进程运行的?是以什么以样的方式运行的?
3.pstree -ap |grep php-fpm
【我在laravel社区写过php版本的master/worker工作模型的文章,有兴趣的大佬可以看看】
FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]
现在呢我想知道worker工作进程,它现在在干嘛?它到底在做什么?【是在睡觉还是在做事情呢?】

![FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]]
FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]
没有错master/worker总为3个进程运行在cpu的地盘上,现在我们来看worker进程在干嘛

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]
这个目录是在进程运行时产生的【它会存储进程运行期间的数据如进程的状态,内存映射,所维护的文件描述符表,资源限制等以及进程运行到哪】

进程的文件维护列表
FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

0,1,2是任何程序启动后【进程默认自动打开的文件】,其它文件是进程运行时打开的其它文件,文件linux用整数字表示【有必要了解一上文件描述符和文件流即STREAM的关系,我这里不在解释】

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]
这里显示了当前master进程的相关信息,我们知道它现在睡于Sleeping【阻塞中,这个时候cpu是运行其它进程了,此进程阻塞,直到合适条件下才会唤醒此进程,所以有必要去学习一下PHP多进程编程哦】
现在我们它进程处在Sleeping中,那我想知道它到底是运行到哪个函数时阻塞的【如果非常熟悉php socket 或是workerman/swoole等网络应该了解阻塞,非阻塞,同步,异步的概念】

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

wchan文件是显示当前进程运行到哪儿阻塞的,没有错运行到epoll_wait【它内部调用ep_poll】
这个时候呢就涉及到TCP/IP通信了【所以本渣渣也在laravel社区发布了关于此内容的文章,本人不会再细说了】
epoll_wait会让进程阻塞【因为现在没有数据可读,什么数据?就是socket 数据】
我们前面也说了我启动PHP-FPM程序后,它启动了一个TCP服务并监听9000端口,说明什么,说明它要进行TCP/IP通信【要和我们后面说到的nginx进行通信啊】

现在我们来看worker 进程
FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

没有错,php worker子进程阻塞了,它在accept时产生了阻塞【因为现在没有socket 客户端连接,所以阻塞Sleeping着,cpu依然去运行其它进程了,accept只有等客户端连接时才会唤醒此进程接受数据】【这里我非常建议大家去看看我之前撸的TCP/IP php socket 编程,不然你看到这里还是迷糊的】

现在我们知道PHP-FPM进程在阻塞状态中【因为没有连接,所以等着,等有小姐姐来了,再服务】

现在我们来看NGINX服务

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

nginx一样有个MASTER主进程和一个工作进程

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]
我们看到NGINX 的工作进程再阻塞中,在等客户端连接【所以大家勿必学习PHP socket 编程或是看看本人撸的workerman注解】

以上我们知道启动php-fpm/nginx之后 它们处于阻塞状态中【知道它运行到EPOLL_WAIT]后阻塞的【所以对网络编程或是对workerman,swoole非常熟悉的人是能看懂这文章的^_^】

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

现在我们在浏览器端访问
http://xxx/test.php
nginx配置是这样的

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]
然后在浏览器上运行

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

FPM 架构下运行一个 PHP 文件后 nginx 如何与 PHP-FPM 进程管理器进行交互的 [硬核跟踪数据交互]

以上内容对于熟悉workerman/swoole/go/nodejs/java网络编程的人是非常容易理解的,如果确实理解困难请多多关注本人的文章,多看看就理解了

PS:说明,时间仓促不在对一些内容进行详细解释【如果说你有意可以加本人,然后给我介绍个女朋友这样子,我会详细跟你解释的^_^】

本作品采用《CC 协议》,转载必须注明作者和本文链接

只会php crud的渣渣

本帖由系统于 2个月前 自动加精
勺颠颠
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 20

面试官:你怎么来的?
程序员:开车。
面试官:说说你是怎么开车来的?
程序员: 先打火,再踩油门? 面试官:请说明一下你踩油门的瞬间,发动机的状态和运行原理。
程序员:balabala。。。。。。

大神:发动机嘛,简单,变速箱我都略有涉及。

2个月前 评论
largezhou 2个月前
L学习不停 (作者) 2个月前
Wi1dcard 2个月前
勺颠颠 (楼主) 2个月前
勺颠颠 (楼主) 2个月前

每次看你文章都莫名想笑😂,挺深入的,就是排版能再优化下就更好了。

2个月前 评论
L学习不停 2个月前
勺颠颠

@Wi1dcard 大佬见谅一下嘛,排版布局下次一定 :joy:

2个月前 评论

如果fpm worker 是轮流 处理请求的 那就麻烦了, 看看sapi/fpm代码, 不是很难

2个月前 评论
勺颠颠

@L学习不停 :blush:

2个月前 评论
L学习不停 2个月前
勺颠颠 (作者) (楼主) 2个月前
zhm1992

fpm worker是大家一起抢,没有轮询算法

2个月前 评论
勺颠颠

@zhm1992 这个不重要【因为worker进程都有机会运行,要么平摊,要么这个干得多,其它干得少,每个worker进程都是接受tcp请求再处理数据,工作内容一样,假设1,2,3进程分别在cpu运行,永远只有一1个进程在运行,其它进程一直在阻塞状态中,直到1进程处理完变成阻塞状态,其它进程接受到数据再唤醒,cpu依然分时运行每一个进程】就像流水线的工人一样,有货了你就干活,没货你就看旁边的员工干活,流水线不会因为你没有货而停止,毕竟worker内容一致,大家都是接受nginx的请求

2个月前 评论
勺颠颠
2个月前 评论

小白膜拜大佬.jpg 点赞

2个月前 评论
勺颠颠

@motecshine linux OS是使用分时技术轮流运行操作系统上所有的进程,运行速度非常快,以至于每个进程都有单独的cpu来运行【虚拟化CPU技术】 进程运行状态有阻塞,运行,就绪等状态,阻塞的一般会放在等待队列中,cpu会继续运行其它进程,当阻塞的进程被唤醒时【如IO事件,中断事件,定时事件产生时】会被该进程放在工作队列中来运行。 而轮流,抢占,计分等各种调度算法只是主进程通过这种方式来选择worker工作进程【一般有多个如1,2,3】,哪个worker进程来处理数据,我就把数据传递给谁【进程间IPC通信如PIPE,MQ,MMAP,SIGNAL】,当cpu分时轮流运行各个worker进程时 如进程1得到主进程传递来的数据那么它就处理数据,而2,3进程就得阻塞放在等待队列中,进程1处理完也是处于阻塞中,然后再来运行进程2,3没有数据就会再运行进程1,循环往复如此而已。

2个月前 评论

@勺颠颠 我们在讨论PHP Fast-CGI Process ManagerWorker怎么工作的,不是在讨论OS的东西,还有没听说过 每个进程都有单独的 cpu 来运行还有这东西。你是指的是 内核态线程?

2个月前 评论
勺颠颠

@motecshine 有兴趣可以看一下 file

2个月前 评论

大佬,如果要了解多进程这些东西,有什么好介绍吗?打算学swoole,但是对进程这块不熟悉

2个月前 评论
勺颠颠

@╰ゝSakura 可以看《操作系统导论》该书有详细的代码示例和理论。

2个月前 评论
╰ゝSakura 2个月前
勺颠颠 (作者) (楼主) 2个月前
勺颠颠

@╰ゝSakura :blush:

2个月前 评论
勺颠颠

@╰ゝSakura 你也可以的

2个月前 评论
自由与温暖是遥不可及的梦想

大哥 你是这是真的厉害。看的 我都是一脸懵逼

1个月前 评论

温柔的送上膝盖~请拿好! :joy:

1个月前 评论
Dennis_Ritchie

:blush: :relaxed:

1个月前 评论
勺颠颠

@自由与温暖是遥不可及的梦想 :joy:

2周前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!