Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

502 bad gateway error! ubuntu 16.04lts nginx 2, yaf 3.0.4 #337

Open
jobsfan opened this issue Feb 15, 2017 · 13 comments
Open

502 bad gateway error! ubuntu 16.04lts nginx 2, yaf 3.0.4 #337

jobsfan opened this issue Feb 15, 2017 · 13 comments
Labels

Comments

@jobsfan
Copy link

jobsfan commented Feb 15, 2017

下面的服务器环境都是用apt-get命令搭建的,本人不太会编译安装。

1、用的是ubuntu 16.04lts server版,先update upgrade到最新(apt-get update, apt-get upgrade)

2、用以下命令安装lnmp
sudo apt-get install nginx
sudo apt-get install mysql-server mysql-client
sudo apt-get install php7.0-fpm

3、修改php.ini配置(否则nginx不解析php)
php7.0配置 /etc/php/7.0/fpm/php.ini
cgi.fix_pathinfo=0
重启service php7.0-fpm reload

4、配置的virtualhost (附件里面找到,在/etc/nginx/sites-available里面放入附件的www.jobsfan.com虚拟机配置,然后在sites-enable里面建个软连接,后重启nginx)

nginx配置默认的虚拟机配置以支持php /etc/nginx/sites-available/www.jobsfan.com
server {
listen 80;
listen [::]:80;

server_name jobsfan.com www.jobsfan.com;

root /opt/www/www.jobsfan.com/public;
index index.html index.php;

location / {
	try_files $uri $uri/ /index.php$is_args$args;
}

location ~ \.php$ {
	include snippets/fastcgi-php.conf;
	 #include /etc/nginx/fastcgi_params;
#
#	# With php7.0-cgi alone:
	#fastcgi_pass 127.0.0.1:9000;
#	# With php7.0-fpm:
	fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location ~ \.htaccess {
    deny all;
}

}

重启service nginx reload

5、pecl安装yaf,先安装phpize

sudo apt-get install php7.0-dev
pecl install yaf

6、修改cli和pfm下的php.ini,加入extension=yaf.so

至此环境已经搭建完成

===============下面是yaf部分的关键代码=========================
/opt/www/www.jobsfan.com/application/plugins 下面的Layout.php
`<?php
class LayoutPlugin extends Yaf_Plugin_Abstract
{
private $_layoutDir;
private $_layoutFile;
private $_layoutVars = array();

public function __construct($layoutFile, $layoutDir=null)
{
    $this->_layoutFile = $layoutFile;
    $this->_layoutDir = ($layoutDir) ? $layoutDir : APP_PATH . 'views/';
}

public function __set($name, $value)
{
    $this->_layoutVars[$name] = $value;
    /**
    * 例子
    * $my = new LayoutPlugin(my.html);
    * $my->name='cj';
    * echo $my->name;  //if add __get() , will output cj
    */
}

public function dispatchLoopShutDown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
    
}

public function dispatchLoopStartup (Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
    
}

public function postDispatch (Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
    $response->clearBody();exit('989898');
    /* $body = $response->getBody();
    $response->clearBody();
    exit('8898'); */
    /* //获取已经设置响应的Body
    $body = $response->getBody();
    //清除已经设置响应的body
    $response->clearBody();
    
    $layout = new Yaf_View_Simple($this->_layoutDir);
    $layout->content = $body;
    $layout->assign('layout', $this->_layoutVars);
    //设置响应的body
    $response->setBody($layout->render($this->_layoutFile)); */
}

public function preDispatch (Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{

}

public function preResponse (Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
    
}

public function routerShutdown (Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
    
}

public function routerStartup ( Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
    
}

}
`

自然在/opt/www/www.jobsfan.com/application 下面的Bootstrap.php中加入
`public function _initPlugin(Yaf_Dispatcher $dispatcher)
{
$userPlugin = new UserPlugin();
$dispatcher->registerPlugin($userPlugin);

    $layoutPlugin = new LayoutPlugin('layout.phtml');
    $dispatcher->registerPlugin($layoutPlugin);
}`

你host到服务器ip到www.jobsfan.com之后,就可以看到502 bad gateway的错误了。奇怪的是,当你把plugins里面的Layout.php中的$response->clearBody();exit('989898');这一句注释或者删除,就立马什么错误都没有了。
我看到issue里面有个502错误,但是和我的情况不太一样#229

最后总结一句,就是$response->clearBody();这句报错。这个到底是php7和yaf3不兼容呢,还是环境出了挂,如果是环境出了挂,应该怎么修正的。希望鸟哥有空看一下。

@motecshine
Copy link

提供一个解决思路

  1. 先核查下你的 web环境下的php版本是否和 php-cli 一致

  2. cd到你的项目目录下
    *首先 php -m |grep yaf 确定是否启用了扩展
    *php -S localhost:8000 启动服务再访问

  3. master 分支是 php7.0

@jobsfan
Copy link
Author

jobsfan commented Feb 16, 2017

@motecshine 谢谢你的回复

  1. web phpinfo() 显示的是PHP Version 7.0.8-0ubuntu0.16.04.3
    root@ubuntu:~# php -v
    PHP 7.0.8-0ubuntu0.16.04.3 (cli) ( NTS )
    Copyright (c) 1997-2016 The PHP Group
    Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.8-0ubuntu0.16.04.3, Copyright (c) 1999-2016, by Zend Technologies

  2. php -m |grep yaf 显示yaf,这个肯定是有的,不用试,因为只要把我最layout.php里面的clearbody这句去掉,整个框架都是正常的,能用的。

php -S localhost:8000 我没有用过php cli的这种server,即便这样操作行,对我来说,没有什么意义

再次感谢你的回复

@laruence
Copy link
Owner

502的话, 看看是不是php coredump了, 如果是, 就看看backtrace是啥, 贴出来

@jobsfan
Copy link
Author

jobsfan commented Feb 16, 2017

哇,鸟哥大神出来了

我core dump不会,有朋友让我用strace试,我按照这个里面的操作http://blog.csdn.net/leonpengweicn/article/details/50331455
得到如下信息

root@ubuntu:# ps -ef | grep fpm | awk '{print "-p " $2}' | xargs strace
strace: Process 3509 attached
strace: Process 9331 attached
strace: Process 9334 attached
strace: Process 9335 attached
strace: attach: ptrace(PTRACE_ATTACH, ...): No such process
[pid 9335] accept(0, <unfinished ...>
[pid 9334] accept(0, <unfinished ...>
[pid 9331] accept(0, <unfinished ...>
[pid 3509] epoll_wait(9, [], 1, 625) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 150) = 0
[pid 3509] socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 10
[pid 3509] getsockopt(10, SOL_SOCKET, SO_SNDBUF, [212992], [4]) = 0
[pid 3509] setsockopt(10, SOL_SOCKET, SO_SNDBUFFORCE, [8388608], 4) = 0
[pid 3509] sendmsg(10, {msg_name(21)={sa_family=AF_LOCAL, sun_path="/run/systemd/notify"}, msg_iov(1)=[{"READY=1\nSTATUS=Processes active:"..., 86}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 86
[pid 3509] close(10) = 0
[pid 3509] epoll_wait(9, [], 1, 849) = 0
[pid 3509] epoll_wait(9, <unfinished ...>
[pid 9335] <... accept resumed> {sa_family=AF_LOCAL, NULL}, [2]) = 5
[pid 9335] times({tms_utime=0, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 1444172471
[pid 9335] poll([{fd=5, events=POLLIN}], 1, 5000) = 1 ([{fd=5, revents=POLLIN}])
[pid 9335] read(5, "\1\1\0\1\0\10\0\0", 8) = 8
[pid 9335] read(5, "\0\1\0\0\0\0\0\0", 8) = 8
[pid 9335] read(5, "\1\4\0\1\3n\2\0", 8) = 8
[pid 9335] read(5, "\17/SCRIPT_FILENAME/opt/www/jobsfa"..., 880) = 880
[pid 9335] read(5, "\1\4\0\1\0\0\0\0", 8) = 8
[pid 9335] brk(0x55796ae8a000) = 0x55796ae8a000
[pid 9335] brk(0x55796aeab000) = 0x55796aeab000
[pid 9335] stat("/opt/www/jobsfan/www.jobsfan.com/public/.user.ini", 0x7ffeabdb9e90) = -1 ENOENT (No such file or directory)
[pid 9335] setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={600, 0}}, NULL) = 0
[pid 9335] rt_sigaction(SIGPROF, {0x55796991e4d0, [PROF], SA_RESTORER|SA_RESTART, 0x7f6998f884b0}, {SIG_DFL, [], 0}, 8) = 0
[pid 9335] rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0
[pid 9335] mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f699ae72000
[pid 9335] getcwd("/", 4095) = 2
[pid 9335] chdir("/opt/www/jobsfan/www.jobsfan.com/public") = 0
[pid 9335] setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={300, 0}}, NULL) = 0
[pid 9335] fcntl(4, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=1, l_len=1}) = 0
[pid 9335] stat("/opt/www/jobsfan/www.jobsfan.com/public/index.php", {st_mode=S_IFREG|0644, st_size=158, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/public", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 9335] lstat("/opt/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 9335] lstat("/opt", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 9335] stat("/opt/www/jobsfan/www.jobsfan.com/conf/application.ini", {st_mode=S_IFREG|0644, st_size=899, ...}) = 0
[pid 9335] open("/opt/www/jobsfan/www.jobsfan.com/conf/application.ini", O_RDONLY) = 6
[pid 9335] ioctl(6, TCGETS, 0x7ffeabdb8700) = -1 ENOTTY (Inappropriate ioctl for device)
[pid 9335] fstat(6, {st_mode=S_IFREG|0644, st_size=899, ...}) = 0
[pid 9335] mmap(NULL, 931, PROT_READ, MAP_PRIVATE, 6, 0) = 0x7f699ae71000
[pid 9335] lseek(6, 0, SEEK_CUR) = 0
[pid 9335] munmap(0x7f699ae71000, 931) = 0
[pid 9335] close(6) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/application/Bootstrap.php", {st_mode=S_IFREG|0644, st_size=1068, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/application", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 9335] stat("/opt/www/jobsfan/www.jobsfan.com/application/Bootstrap.php", {st_mode=S_IFREG|0644, st_size=1068, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/application/plugins/User.php", {st_mode=S_IFREG|0644, st_size=874, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/application/plugins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 9335] stat("/opt/www/jobsfan/www.jobsfan.com/application/plugins/User.php", {st_mode=S_IFREG|0644, st_size=874, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/application/plugins/Layout.php", {st_mode=S_IFREG|0644, st_size=2138, ...}) = 0
[pid 9335] stat("/opt/www/jobsfan/www.jobsfan.com/application/plugins/Layout.php", {st_mode=S_IFREG|0644, st_size=2138, ...}) = 0
[pid 9335] mmap(NULL, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f699ae62000
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/application/controllers/Index.php", {st_mode=S_IFREG|0644, st_size=569, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/application/controllers", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 9335] stat("/opt/www/jobsfan/www.jobsfan.com/application/controllers/Index.php", {st_mode=S_IFREG|0644, st_size=569, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/application/views/index/index.phtml", {st_mode=S_IFREG|0644, st_size=110, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/application/views/index", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 9335] lstat("/opt/www/jobsfan/www.jobsfan.com/application/views", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 9335] stat("/opt/www/jobsfan/www.jobsfan.com/application/views/index/index.phtml", {st_mode=S_IFREG|0644, st_size=110, ...}) = 0
[pid 9335] --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x7f6996000000} ---
[pid 9335] +++ killed by SIGSEGV +++
[pid 3509] <... epoll_wait resumed> 0x55796ad2cc10, 1, 1000) = -1 EINTR (Interrupted system call)
[pid 3509] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=9335, si_uid=33, si_status=SIGSEGV, si_utime=0, si_stime=0} ---
[pid 3509] write(7, "C", 1) = 1
[pid 3509] rt_sigreturn({mask=[]}) = -1 EINTR (Interrupted system call)
[pid 3509] epoll_wait(9, [{EPOLLIN, {u32=1775360384, u64=93979954764160}}], 1, 951) = 1
[pid 3509] read(6, "C", 1) = 1
[pid 3509] wait4(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV}], WNOHANG|WSTOPPED, NULL) = 9335
[pid 3509] write(5, "[16-Feb-2017 06:05:42] WARNING: "..., 120) = 120
[pid 3509] clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f699aed7b90) = 9481
[pid 3509] write(5, "[16-Feb-2017 06:05:42] NOTICE: ["..., 61) = 61
[pid 3509] wait4(-1, 0x7ffeabdbaf5c, WNOHANG|WSTOPPED, NULL) = 0
[pid 3509] read(6, 0x7ffeabdbb047, 1) = -1 EAGAIN (Resource temporarily unavailable)
[pid 3509] epoll_wait(9, [], 1, 949) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 1000) = 0
[pid 3509] epoll_wait(9, [], 1, 138) = 0
[pid 3509] socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 10
[pid 3509] getsockopt(10, SOL_SOCKET, SO_SNDBUF, [212992], [4]) = 0
[pid 3509] setsockopt(10, SOL_SOCKET, SO_SNDBUFFORCE, [8388608], 4) = 0
[pid 3509] sendmsg(10, {msg_name(21)={sa_family=AF_LOCAL, sun_path="/run/systemd/notify"}, msg_iov(1)=[{"READY=1\nSTATUS=Processes active:"..., 88}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 88
[pid 3509] close(10) = 0
[pid 3509] epoll_wait(9, ^C
root@ubuntu:
# strace: Process 3509 detached

@persiliao
Copy link

persiliao commented Feb 16, 2017

重新编译了一个新版PHP不会报502,运行正常。

@jobsfan
Copy link
Author

jobsfan commented Feb 16, 2017

@ipersi 可能通过sudo apt-get install php7.0-fpm这种方式搞的环境,yaf的clearbody都不行,我apt-get update, upgrade把php从7.0.9升级到7.0.13,还是报502 bad gateway

@laruence
Copy link
Owner

关于如何得到coredump, 看这个: http://bugs.php.net/bugs-generating-backtrace.php

@wangcn
Copy link

wangcn commented Mar 31, 2017

php7.1.3 debug模式下,clearBody会core dump. release下正常。
backtracer如下:
#0 0x00000000008fae6d in zend_string_hash_val (s=0x5000000040) at /home/work/install/php-7.1.3/Zend/zend_string.h:85
#1 0x00000000008fe938 in zend_hash_del (ht=0x7fdbbdf70780, key=0x5000000040) at /home/work/install/php-7.1.3/Zend/zend_hash.c:1042
#2 0x00007fdbbdbd6387 in yaf_response_clear_body (response=0x7fdbbde15a90, name=0x5000000040) at /home/work/work/code/yaf/yaf_response.c:180
#3 0x00007fdbbdbd6b9d in zim_yaf_response_clearBody (execute_data=0x7fdbbde15a70, return_value=0x7ffe52ac5560)
at /home/work/work/code/yaf/yaf_response.c:362
#4 0x000000000094a670 in ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER () at /home/work/install/php-7.1.3/Zend/zend_vm_execute.h:970
#5 0x0000000000949066 in execute_ex (ex=0x7fdbbde15250) at /home/work/install/php-7.1.3/Zend/zend_vm_execute.h:429
#6 0x00000000008d19ae in zend_call_function (fci=0x7ffe52ac5790, fci_cache=0x7ffe52ac5730)
at /home/work/install/php-7.1.3/Zend/zend_execute_API.c:846
#7 0x0000000000911a62 in zend_call_method (object=0x7fdbbdf40068, obj_ce=0x7fdbbdf269f0, fn_proxy=0x0,
function_name=0x7fdbbdbef192 "routershutdown", function_name_len=14, retval_ptr=0x0, param_count=2, arg1=0x7fdbbde75d48,
arg2=0x7ffe52ac59e0) at /home/work/install/php-7.1.3/Zend/zend_interfaces.c:99
#8 0x00007fdbbdbc349e in yaf_dispatcher_dispatch (dispatcher=0x7fdbbdec66f8, response_ptr=0x7ffe52ac59e0)
at /home/work/work/code/yaf/yaf_dispatcher.c:863
#9 0x00007fdbbdbbe5f8 in zim_yaf_application_run (execute_data=0x7fdbbde15200, return_value=0x7ffe52ac5a80)
at /home/work/work/code/yaf/yaf_application.c:444
#10 0x000000000094a670 in ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER () at /home/work/install/php-7.1.3/Zend/zend_vm_execute.h:970
#11 0x0000000000949066 in execute_ex (ex=0x7fdbbde15030) at /home/work/install/php-7.1.3/Zend/zend_vm_execute.h:429
#12 0x0000000000949178 in zend_execute (op_array=0x7fdbbde75000, return_value=0x0) at /home/work/install/php-7.1.3/Zend/zend_vm_execute.h:474
#13 0x00000000008ea972 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /home/work/install/php-7.1.3/Zend/zend.c:1476
#14 0x000000000085a95a in php_execute_script (primary_file=0x7ffe52ac8070) at /home/work/install/php-7.1.3/main/main.c:2537
#15 0x00000000009d9215 in main (argc=4, argv=0x7ffe52ac8298) at /home/work/install/php-7.1.3/sapi/fpm/fpm/fpm_main.c:1966

我的环境:
openSUSE42.2+gcc4.8.5+php7.1.3+yaf@5dfce05

@ghost
Copy link

ghost commented Nov 23, 2017

Today we meet the same problem.

The minimal reproduce code

$res = $this->yafResponse;
        $res->setHeader('Content-Type', $contentType, false, $responseCode);
        $res->setBody($content);
        $res->response();
        $res->clearBody();
        $res->clearHeaders();

Seems $res->response() will release the hashtable, then the clearBody() try to delete an element of non exists hashtable

int yaf_response_clear_body(yaf_response_t *response, zend_string *name) {
	zval *zbody;
	zbody = zend_read_property(yaf_response_ce, response, ZEND_STRL(YAF_RESPONSE_PROPERTY_NAME_BODY), 1, NULL);

	if (name) {
		zend_hash_del(Z_ARRVAL_P(zbody), name);
	} else {
		zend_hash_clean(Z_ARRVAL_P(zbody));
	}
	return 1;
}

before zend_hash_del we really should check if the hashtable exists, and check if the element exists in the hash table

@ghost
Copy link

ghost commented Nov 23, 2017

ping @laruence , May you please fix this ?

@zhangjiayin
Copy link

看上去类似 if (name) { 这样的判断需要修改 if (name && name != NULL && ZSTR_LEN(name) > 0) {

@zhangjiayin
Copy link

或者 去掉 $res->clearBody();

@rendong237
Copy link

rendong237 commented Mar 22, 2019

我也遇到这个问题。不过很奇怪,同一个服务器,有的项目没问题。有的有。

[7506527.060672] php-fpm[27396]: segfault at 38933544 ip 0000000000859704 sp 00007ffd1fb3c170 error 4 in php-fpm[400000+b06000]

00000000008596f0 <zend_hash_del>:
8596f0: 41 57 push %r15
8596f2: 49 89 f7 mov %rsi,%r15
8596f5: 41 56 push %r14
8596f7: 49 89 fe mov %rdi,%r14
8596fa: 41 55 push %r13
8596fc: 41 54 push %r12
8596fe: 55 push %rbp
8596ff: 53 push %rbx
859700: 48 83 ec 38 sub $0x38,%rsp
859704: 4c 8b 46 08 mov 0x8(%rsi),%r8
859708: 4d 85 c0 test %r8,%r8
85970b: 0f 84 7f 01 00 00 je 859890 <zend_hash_del+0x1a0>
859711: 41 8b 46 0c mov 0xc(%r14),%eax
859715: 4d 8b 6e 10 mov 0x10(%r14),%r13
859719: 89 44 24 1c mov %eax,0x1c(%rsp)
85971d: 44 09 c0 or %r8d,%eax
859720: 48 98 cltq
859722: 41 8b 6c 85 00 mov 0x0(%r13,%rax,4),%ebp
859727: 83 fd ff cmp $0xffffffff,%ebp
85972a: 0f 84 a0 00 00 00 je 8597d0 <zend_hash_del+0xe0>
859730: 89 eb mov %ebp,%ebx
859732: 48 c1 e3 05 shl $0x5,%rbx
859736: 4c 01 eb add %r13,%rbx
859739: 48 8b 4b 18 mov 0x18(%rbx),%rcx
85973d: 4c 39 f9 cmp %r15,%rcx
859740: 0f 84 0c 02 00 00 je 859952 <zend_hash_del+0x262>
859746: 49 8d 47 18 lea 0x18(%r15),%rax
85974a: 45 31 db xor %r11d,%r11d

image

发现是xhprof开启就会有这个问
安装的xhprof:https://github.com/longxinH/xhprof.git
开启参数:$flags = XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

7 participants