php数据堆栈 php栈与队列的区别

php能不能像java那样打印错误堆栈信息到错误日志

PHP 确实不会输出错误堆栈,但通过函数,还是能够获取到错误堆栈的。

创新互联公司专注于加格达奇网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供加格达奇营销型网站建设,加格达奇网站制作、加格达奇网页设计、加格达奇网站官网定制、小程序设计服务,打造加格达奇网络公司原创品牌,更为您提供加格达奇网站排名全网营销落地服务。

function getBacktrace() {

ob_start();

debug_print_backtrace();

return ob_get_clean();

}

调用上面这个函数取得错误堆栈,再用 file_put_contents('log_path', FILE_APPEND); 写入日志文件即可。

还有一个办法:为 PHP 安装 xdebug 扩展

windows 下的安装方法 安装好后,修改 php.ini

PHP has encountered a Stack overflow PHP遇到堆栈溢出

你可能是新的环境,你按我的方法试一下,在你的程序外面再建一个目录,然后重新绑定一下程序就可能了,这是权限问题

php不打印调用栈

基于以上原因,今天我们就来讲一讲在 PHP 项目当中,怎样快速得到 PHP 调用栈。

PHP 调用栈,顾名思义就是从我们 Web 访问项目的时候,PHP 从执行开始到返回给我们结果的这一系列操作的 PHP 类/方法等调用的过程。

一、利用 XDebug 扩展的 xdebug_get_function_stack() 函数

对 XDebug 扩展了解的同学,可以知道 XDebug 的功能主要用于代码调试。其中,XDebug 就提供了一个非常有用的函数:xdebug_get_function_stack()。

从这个函数的的名字我们可以知道它就是获取方法调用栈的。

我们只需要在项目当中放到 PHP 脚本当中,只要这个方法被执行到。那么,这个方法就能打印 PHP 脚本从开始到执行到这个位置的所有调用栈。从而就能解决我们对代码执行流程不清晰的问题。

这个方法会返回一个数组。数据里面包含了执行的脚本文件路径、类名、方法名、参数等信息。

注:该方法生成的调用栈信息相对比较粗糙。对于简单初浅调试完成够用了。同时,要使用这个方法,必须安装 XDebug 扩展。PHP 安装 XDebug 扩展的教程网上很多。这里不赘述。

二、利用 phptrace 扩展查看

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


分享标题:php数据堆栈 php栈与队列的区别
路径分享:http://scyanting.com/article/doejgds.html