[转载]PHP程序员的优化调试技术和技巧2

更新:2018年07月06日 14:30 PHP 阅读(0)
标签: @PHP @调试 @优化 @技巧 #作者: 未知
本文介绍调试 PHP 应用程序的各种方法,包括在 Apache and PHP 中打开错误报告,以及通过在一个简单的 PHP 脚本中放置策略性的 print 语句,找到更困难的 bug 的源头。还会介绍用于 Eclipse 的 PHPEclipse 插件,这是一个灵活的开发环境,具有实时语法解析能力,还会介绍 PHPEclipse 的 DBG 调试器扩展。

      您可能用过 Eclipse,但是可能不熟悉它。请参阅 参考资料 获得 Eclipse 平台的介绍。

  用于 Eclipse 的 PHPEclipse 插件是用来开发 PHP 应用程序的一个流行工具。请启动 Eclipse 并把工作区目录指定为 Apache 的 www 目录(在我的机器上是 c:\www)。现在单击 File > New > Project。会弹出 New Project 向导。双击 PHP 文件夹并选择 PHP Project。单击 Next,输入项目名称 debugArticle,并单击 Finish。

  如果把 Web 服务器设置为在端口 80 上侦听,那么不需要做任何修改。否则,请转到 Navigator 窗口,在 PHP 项目 debugArticle 上右击,选择 Properties,然后单击 PHP Project Settings。单击 Configure Workspace Settings 然后修改合适的 localhost 或者添加 Web 服务器侦听的端口(例如 )。单击 Apply 完成设置。

  Navigator 窗口应当显示项目和一个 .project 文件。在项目上右击,就像前面做的那样,只是这次选择 New > PHP File。用想要创建的 PHP 文件的名称 test3.php 替换 *.php,然后单击 Finish。在 Eclipse IDE 中应当出现一个新文件。可能需要导航到窗口底部的 PHP 浏览器来查看 PHP 文件的当前输出(参见图 5)。

      图 5. Eclipse 的 PHPEclipse 插件

  注意,只有 Windows? 的用户可以像清单 5 所示的那样使用 PHP 浏览器。通过打开独立浏览器窗口并把浏览器指向测试脚本所在目录,也可以使用同样的功能。

  现在来演示这个应用程序,证明它的强大能力。

  在 “使用调试器” 一节中,将学习如何用 Eclipse、PHPEclipse 和前面下载的调试器 PHP 扩展来调试 PHP 应用程序。先从学习如何使用它的语法解析功能开始。

  语法解析和加下划线

  先从查看 PHPEclipse 如何提供帮助调试 PHP 应用程序的实时语法解析功能开始。要看这个特性的实际应用,先从在 Eclipse 中定义 test3.php 开始,如下所示。

<?php 
print(,"Hello World!"); 
?>

  注意,在清单 4 中加下划线的两个字符在 Eclipse 中加了下划线,提示语法不正确。按 Ctrl+S 保存文件,会在 Eclipse 中显示解析错误:在代码中与解析错误对应的行上会加上红 “x”,如图 6 所示。

      图 6. 语法错误强调

  现在演示 PHP 浏览器。这个窗口提供了当前 PHP 脚本的预览,如图 6 所示。

  从上面定义的 test3.php 中删除逗号(,)。按 Ctrl+S 保存文件,然后观察 PHP 浏览器窗口的更新,显示了 Hello World(参见图 7)。

      图 7. 在 PHPEclipse 中预览 PHP 脚本

  下面是用调试器在 PHP 中设置断点。
      使用调试器

  使用调试器,可以设置断点并查看 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 透视图

  现在可以设置断点了。

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

      清单 4. 设置和创建断点

<?php 
function break-point(){ 
    ob_flush(); 
    flush(); 
    sleep(.1); 
    debugBreak();
}
?>

 

感谢阅读本文,若本文对你有所帮助,不妨将其推荐给好友,与好友一起分享。
文章仅做学习交流使用,若您认为文章存在侵权或不合法行为等,请及时联系我们。
文章之版权归其合法拥者所有。转载原创内容无需联系本站站长,请注明原文出处及链接。
#原文:[IT技术网] http://www.173it.cn/view-388-1.html
更新:2018年07月06日 14:30 PHP 阅读(0)
标签: @PHP @调试 @优化 @技巧 #作者: 未知

阅读延伸

CentOS7系统安装Redis5.0.5并安装PHP-redis扩展 | 暮云归

VM虚拟机,CentOS7系统,已安装完整的LAMP。PHP版本为7.3.25(PHP7+)。
现在的目的是为该系统安装Redis服务(Redis5.0.5),该版本在当下是比较新的稳定版。
还有就是为我们的PHP安装redis扩展(可通过phpinfo()函数看到redis扩展的具体信息)

[原创]Centos7系统为php7安装memcache扩展 | 十年铸剑

这篇文章主要记录本人安装的历程,若有需要,希望能对大家起到一点作用,哈哈。
这是在虚拟机中安装memcache扩展,虚拟机安装的系统是CentOS7,已正常安装了PHP7.3.25.

[转载]Mysql 工作原理 | Still water run deep

刚开始接触一个新的事物的时候,我觉得很有必要从其工作原理入手。
弄清楚这个东西的来龙去脉,为接下来的继续深入学习做好铺垫。
掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路。

[原创]ThinkPHP3.1快速入门 多语言 | 十年铸剑

ThinkPHP支持多语言,采用的是语言文件的方式。
如果你的应用涉及到多个语言版本和国际化的支持,那么可以定义相关的语言包文件。任何字符串形式的输出,都可以定义语言常量。

[原创]PHPCMS 调用自定义幻灯片广告 | 十年铸剑

phpcms的广告位管理功能非常强大,一般情况下调用广告位只需要引进一个js文件就可以了,但若要实现点击切换的广告位(幻灯片广告,或者叫做轮播广告)就有些困难(主要是默认没有切换的滑动点,或滑动点的样式不能自定义),于是就不能直接应用phpcms给出的引用js文件的方式来实现了。
标签: @PHPCMS @幻灯片 PHP 十年铸剑 05月03日 08:27 继续阅读

[转载]php对文件的操作

创立文件夹
循环建立文件夹
检测文件类型
上传文件
标签: @PHP @文件 @文件夹 PHP 未知 05月03日 08:27 继续阅读

[转载]php通过正则表达式匹配url

php通过正则表达式匹配url
标签: @PHP @正则 @匹配URL PHP 未知 05月03日 08:27 继续阅读

[转载]Linux环境下如何使用PHP处理图像

利用PHP创建图像是相当容易的一件事情。只要安装一些第三方的库文件并具有一定的几何知识,就可以利用PHP来创建和处理图像了。目前PHP使用GD库处理图像。在PHP中一些图像函数是可以直接使用的,但是大多数函数需要安装GD函数库。GD库提供一系列函数进行画图、使用颜色、处理预存的图像和填充操作。GD库是ThomasBoutell设计的ANSIC语言编写,同时支持在perl、Tcl语言中作图。由于GD是一个可以被建立成共享或静态的库,所以在PHP使用GD库进行图像操作是非常容易的。
标签: @Linux @PHP @处理图像 PHP 未知 05月03日 08:27 继续阅读

[转载]Linux环境下如何使用PHP处理图像(4)

利用PHP创建图像是相当容易的一件事情。只要安装一些第三方的库文件并具有一定的几何知识,就可以利用PHP来创建和处理图像了。目前PHP使用GD库处理图像。在PHP中一些图像函数是可以直接使用的,但是大多数函数需要安装GD函数库。GD库提供一系列函数进行画图、使用颜色、处理预存的图像和填充操作。GD库是ThomasBoutell设计的ANSIC语言编写,同时支持在perl、Tcl语言中作图。由于GD是一个可以被建立成共享或静态的库,所以在PHP使用GD库进行图像操作是非常容易的。
标签: @Linux @PHP @处理图像 PHP 未知 05月03日 08:27 继续阅读

[转载]Php部分常见问题总结(1) | hdm58

1:为什么我得不到变量
我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值?在PHP4.2以后的版本中register_global默认为off若想取得从另一页面提交的变量:
方法一:在PHP.ini中找到register_global,并把它设置为on.
方法二:在接收网页最前面放上这个extract($_POST);extract($_GET);(注意extract($_SESSION)前必须要有Session_Start()).
方法三:一个一个读取变量$a=$_GET["a"];$b=$_POST["b"]等,这种方法虽然麻烦,但比较安全.
标签: @PHP @常见问题 PHP hdm58 05月03日 08:27 继续阅读