php堆栈数据 php的堆和栈

php不打印调用栈基于以上原因php堆栈数据,今天我们就来讲一讲在 PHP 项目当中,怎样快速得到 PHP 调用栈 。
PHP 调用栈,顾名思义就是从我们 Web 访问项目php堆栈数据的时候,PHP 从执行开始到返回给我们结果php堆栈数据的这一系列操作的 PHP 类/方法等调用的过程 。
一、利用 XDebug 扩展的 xdebug_get_function_stack() 函数
对 XDebug 扩展了解的同学,可以知道 XDebug 的功能主要用于代码调试 。其中 , XDebug 就提供了一个非常有用的函数:xdebug_get_function_stack() 。
从这个函数的的名字我们可以知道它就是获取方法调用栈的 。
我们只需要在项目当中放到 PHP 脚本当中,只要这个方法被执行到 。那么,这个方法就能打印 PHP 脚本从开始到执行到这个位置的所有调用栈 。从而就能解决我们对代码执行流程不清晰的问题 。
这个方法会返回一个数组 。数据里面包含了执行的脚本文件路径、类名、方法名、参数等信息 。
注:该方法生成的调用栈信息相对比较粗糙 。对于简单初浅调试完成够用了 。同时,要使用这个方法,必须安装 XDebug 扩展 。PHP 安装 XDebug 扩展的教程网上很多 。这里不赘述 。
二、利用 phptrace 扩展查看
【php堆栈数据 php的堆和栈】phptrace 是一个追踪(trace)PHP 执行流程的工具 。这是奇虎 360 团队开源的一款 PHP 扩展工具 。它本身的功能之一就是查看 PHP 调用栈 。所以,推荐指数 5 颗星 。
项目开源地址:
安装扩展:
$ wget
$ tar zxvf trace-1.0.1beta.tgz
$ cd trace-1.0.1beta/extension
$ {php_bin_dir}/phpize
$ ./configure --with-php-config={php_bin_dir}/php-config
$ make
$ make cli
$ make install-all
然后在 php.ini 配置文件末尾增加:
extension=trace.so
重启我们的 PHP-FPM 。
为了能在命令行使用 phptrace 提供的命令,我们还需要在刚刚的 exten
如何查看linux php-fpm.pid位置保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
pm.max_requests = 1000
#设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.
pm.status_path = /status
#FPM状态页面的网址. 如果没有设置, 则无法访问状态页面. 默认值: none. munin监控会使用到
ping.path = /ping
#FPM监控页面的ping网址. 如果没有设置, 则无法访问ping页面. 该页面用于外部检测FPM是否存活并且可以响应请求. 请注意必须以斜线开头 (/) 。
ping.response = pong
#用于定义ping请求的返回相应. 返回为 HTTP 200 的 text/plain 格式文本. 默认值: pong.
request_terminate_timeout = 0
#设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用. 设置为 '0' 表示 'Off'.当经常出现502错误时可以尝试更改此选项 。
request_slowlog_timeout = 10s
#当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0' 表示 'Off'
slowlog = log/$pool.log.slow
#慢请求的记录日志,配合request_slowlog_timeout使用
rlimit_files = 1024
#设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改 。
rlimit_core = 0
#设置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整数. 默认值: 系统定义值.
chroot =
#启动时的Chroot目录. 所定义的目录需要是绝对路径. 如果没有设置, 则chroot不被使用.

推荐阅读