科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件PHP程序员的优化调试技术和技巧

PHP程序员的优化调试技术和技巧

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍调试 PHP 应用程序的各种方法,包括在 Apache and PHP 中打开错误报告。

作者:Tyler Anderson 来源:IBM 2007年10月21日

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
使用调试器

  使用调试器,可以设置断点并查看 PHP 代码到所设断点之前的浏览器输出。然后可以继续代码的执行并查看到下一断点之前的浏览器输出,然后再到下一个,直到 PHP 脚本完成。

  现在把 “设置” 一节中在 php.ini 中注释掉的行取消注释,并重新启动 Apache。现在装入了调试器,Eclipse 能够和它挂上了。

  现在在 Eclipse 中设计调试环境。请创建新的 test4.php 文件,先保持为空。现在单击 Run > Debug。在左侧面板中选择 PHP DBG Script,并单击 New。现在转到 File 选项卡,输入当前项目 debugArticle 以及想要调试的文件 test4.php。现在转到 Environment 选项卡,然后再到 Interpreter 子选项卡。在 PHP 的安装目录中找到 php.exe 文件(我的是 c:\apps\php5.0.3\php.exe)。现在单击 Remote Debug 子选项卡,选择 Remote Debug,如果没有使用 Windows,请取消 “Open with DBGSession URL in internal browser box” 复选框。把 Remote Source 路径设置成与要测试的 PHP 脚本的绝对路径(不是 Web 路径)相同(我的设置是 c:\www\debugArticle\test4.php)。现在单击 Debug

  现在应当装入 Debug 透视图,如图 8 所示。否则,请单击 Window > Open Perspective > Other,并选择 Debug

图 8. Eclipse 中的 Debug 透视图
Eclipse 中的 Debug 透视图

  现在可以设置断点了。

  对于本文中使用的插件和扩展的版本,断点功能是必需的,因为 PHP 在把输出发送到浏览器之前会缓冲它。除此之外,需要做的不仅仅是设置一个断点把当前显示数据刷新到 Web 浏览器,所以要像下面和图 8 所示那样定义 test4.php。

清单 4. 设置和创建断点
 
<?php 
function break-point(){ 
    ob_flush(); 
    flush(); 
    sleep(.1); 
    debugBreak(); 
} 
print("This will get shown first, "); 
print("as will this<br>"); 
breakpoint(); 
print("This won't get shown until after "); 
print("continuing the break-point<br>"); 
breakpoint(); 
print("END!"); 
? 

  breakpoint() 函数会把缓冲的输出和其他缓冲的数据刷新到 Web 浏览器。对 sleep(.1) 的调用是必需的,这样代码中止于 debugBreak() 之前,服务器才有足够的时间把数据刷新到 Web 浏览器,这个函数是前面下载的 PHP 调试器扩展的内部函数。这样,调用 breakpoint() 会把 HTML 块、print() 和 echo() 语句的数据刷新到浏览器,然后中止代码执行。

  在像清单 4 那样编写完代码之后,可以打开浏览器并指向 test4.php,或者可以查看 PHP 浏览器窗口(我的是 http://localhost/debugArticle/test4.php)。每次输入和保存文件时,在 PHP 浏览器窗口中就已经启动了调试序列。如果不使用 Windows,请通过浏览器查看 test4.php。在保存了文件之后,用 F8 或单击 Run > Resume 继续代码执行。持续这么做,直到最后一行输出是 END! 为止(参见图 9、10 和 11)。

图 9. 初始的到第一个断点的 PHP 浏览器输出
初始的到第一个断点的 PHP 浏览器输出

  请注意图 9 中的 Debug 窗口如何把执行显示为挂起的。

图 10. 第一个断点之后到第二个断点之前的 PHP 浏览器输出
第一个断点之后到第二个断点之前的 PHP 浏览器输出

  图 10 的 Debug 窗口仍然把执行显示为挂起,而第二组数据显示在 PHP 浏览器中。

图 11. 完整的 PHP 浏览器输出
完整的 PHP 浏览器输出

  注意,图 11 的 Debug 窗口中的代码不再挂起,整个脚本已经执行,如图 11 中的 PHP 浏览器所示。

  既然已经看到了用 PHPEclipse 和调试器扩展进行开发的优势,那么很难想像没有它会怎么样。

  结束语

  现在已经向 PHP 的调试技术集中添加了错误报告的运用、print 语句、PHPEclipse 和调试器扩展,您可以通过减少每行代码的错误数量,成为更有效的 PHP 编码人员。请参阅 参考资料 获得一些 PHP 教程,可以在上面测试这些新技能。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章