让PHP程序员工作更高效的四大神奇(1)

做程序猿「媛」是一个苦逼的活,大周六地早起在技术群里招呼,看到没有啥人响应,说了一句,「估计都没有醒」,然后一位哥们抛过来,「在加班」 !

做 Web 开发更是一个苦逼的活,不像是做 iOS,搞定客户端,基本上就万事大吉了。做 Web 开发不仅仅是要做后端,前端也需要了解和熟悉!

做前后端通吃的 DevOps 全栈工程师绝对是最苦逼的活,不但需要做开发,而且还要了解运维、优化,不会运维的工程师绝对不是一个好架构师!

但所幸的事,一个优秀的工程师尽管很忙,尽管要熟悉前后端、系统、运营、优化,但是在他的工具箱里,放着一大堆工具,让这种生活变得不那么苦逼。

这里就介绍四个让我们 DevOps 生活变得美好的神器。分别是 Xdebug、XHProf 、 OneAPM 和 SocketLog。

Xdebug

作为开发人员,睡得最踏实的事是对自己写的代码了如指掌,无论是从功能层面,还是性能层面。而做 Web PHP 开发,比较棘手的一件事情就是代码的调试。作为脚本语言,在远程服务器端运行,客户端生成的全是 HTML 代码,一般认为我们无法准确地调试运行的情况,更不要说单步调试、变量监控等事情了。其实这是有误解的,有一个 PHP 扩展 Xdebug 能让方便地让我们调试远程服务器上运行的代码。

方法很简单,从 Xdebug 下载最新版的源代码。 wget 解压:

tar –zxvf xdebug-2.3.3.tgz
cd xdebug-2.3.3 phpize
./configure –with-php-config=/usr/bin/php-config
make
make install

再增加相应的配置到 php.ini ,需要注意有两点:

1. xdebug 是 zend_extension

2. 端口默认是 9000,和 php-fpm 的缺省端口冲突,所以这里换用 9100

[xdebug]
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9100

这样就装好了,就是如此简单,下面我们可以开始使用了。以 ThinkPHP 应用开发做例子吧。ThinkPHP 典型的单入口应用,调用层次相对复杂。所以想要了解调用堆栈还是比较麻烦的。要想得到某一行的调用堆栈,可以使用 PHP 自带的 debug_backtrace 函数可以获得,但是不怎么形象,返回来一个数组而已。而 Xdebug 就能让这一切可视化起来。

配合 Xdebug 使用的是 Netbeans 自带的调试工具。首先通过首选项修改了一下 PHP 调试的端口,从9000改成9100,其他不用动。注意 在第一行停止 是选上的,这将在 PHP 程序调试时,运行到第一行 PHP 代码时停止,在 ThinkPHP 中,即入口文件 index.php 的第一行停止。

在本例中,笔者做了一个租车管理系统的示例,项目名为 zuches 。将代码部署在 http://localhost/zuches 能访问的地方,索引文件是 index.php。

由于 index.php 是入口文件,所以在 index.php 上点击右键,选择调试。

然后 Netbeans 自动打开了如下地址,进入调试状态 : http://localhost/zuches/index.php?XDEBUG_SESSION_START=netbeans-xdebug 同时运行位置指示停留到了 index.php 的第一行。如下:

点击继续运行,由于在 IndexController.class.phpindex 方法中加上了断点,所以位置指示又停留在了相应的断点处。

这个时候,我们可以查看中断时候的调用堆栈和变量了。通过堆栈可以方便地定位到各定位的类和相应方法。

各种变量,无论是局部变量和实例属性,无论是 cookie,还是提交数据,都能在变量表中看到,一目了然。

总之,Xdebug 让我们即使做的是服务器端页面和 API 开发,也可以像桌面应用开发一样,调试每一行代码了。

Xdebug 除了使用来进行单步调试之外,还能收集请求中的执行日志,记录每一个函数的执行过程。这些日志可以用 wincachegrind 等工具进行分析,看到函数的调用栈和所花的时间。这里不再赘述,我们也不是很推荐,因为 XHProf 在这块要轻量级和强大的多,不用如此费劲地下载日志,分析日志。

时间: 2024-11-08 18:22:21

让PHP程序员工作更高效的四大神奇(1)的相关文章

十一大技巧提高程序员工作效率 小习惯更重要

"吃苦耐劳"真的是优良品质吗,与你怎么做相比,老板们应该更关心你做了什么.达到的效果.所以,效率,还是效率,希望这些实用小技巧对大家有所帮助. 提高程序员工作效率 1.两分钟法则 如果一件事可以在两分钟内完成,比如回复邮件,一个简单的家务,就立即完成,因为记住它.计划时间.在后来完成它,可能会花费五分钟甚至更多的时间. 2.五分钟法则 拖延症是影响工作效率的大魁首之一,想要治愈它不是给自己定下目标.下定决心去完成一项大任务,而是只在那件事上花五分钟.你会发现在大多数情况下,它在超出五分

简化IT程序员工作生活的4个窍门

如果可以简化你的生活--少做枯燥的任务,将时间真正地用于完成事情,你愿不愿意去尝试?下面就让我一起来学一下如何让程序员工作生活变得简单的小窍门. 如果你敢于倾听自己的心声,你会发现自己一天中的大多数时间所做的事情并不都是有趣的.然而,为了完成你喜欢的重要任务,你必须先完成那些单调又费 时的必要职责.所以,要是能够简化任务,少做那些无聊又耗时的事情,将时间真正投入到喜欢的事情上去,那该多好?通过以下几个简单的技巧,你或许可以得偿 所愿. 查找个人生活中的瓶颈 Stever Robbins,称自己为

J2EE方向二年工作经验,不知道南京二年java程序员工作环境薪水大约在一个什么水平上,谢谢

问题描述 J2EE方向二年工作经验,没有人讨论过南京的行情,不知道南京二年java程序员工作环境薪水大约在一个什么水平上,谢谢 问题补充:7454103 写道 解决方案 引用呵呵,顶礼膜拜了,学习,分数给你了 那我就先谢过了! (有机会还可以一起研究已经进步吗! 呵呵)解决方案二:引用说笑了,2年工作经验,其中还有一年是.net的.强到哪里去呢.net 不是也很疯狂的嘛! 只有你实干了一年 java 其实就没啥好担心的了!就看就 面试的当场发挥! 和技术经理聊的是否开心! 反正我是这么过来的!解

.net程序员工作两年总结

(2015年9月) 最近换了工作,面试了很多家公司想总结下,以便以后回顾知道自己是怎么走过来的. 入行背景: 我是半路转行做软件开发的,2011年7月大学专科毕业,大学专业是:机械制造及其自动化:2011年1月到8月底,在合肥格力电器工作多半年,2011年9月份开始接触编程. 本来只是看了<硅谷禁书><李开复自传>书上有个观点,一个人千万不能年纪不大,就落后了时代,一定要学会用这个时代的先进技术,那就是计算机互联网技术.我深信不疑! 本来我只是想学习下搜索技术,人人都是讲互联网是个

90后程序员工作经历

首先自我介绍一下,1992年生人,现任某家公司项目的单一模块设计与开发,Java语言.这里就是想谈谈我的面试之路,希望能给大家提供点经验.       2008年,我16周岁了,根据中华人民共和国未成年人保护法及中华人民共和国劳动法规定,我已经达到了法定工作年龄.在今年4月的清明节,在北京一个很成功的朋友开车带我回家时对我说了一些话,改变了我的近期人生目标.可以给大家看一下当时的对话       朋友:"现在还能自己赚钱吗?".       我  :"不能了,在专心学习.&q

程序员工作中会遭遇的天花板 工作中不由你控制的一些地方(转)

  在我看来,程序员做的是开创性的工作.互联网的发展不但推动了技术的发展,而且带来了技术的普及.因此程序员不比以前,现在要找某方面的资料是很easy的事情了.看过大量的资料,各种新颖的技术方案和解决思路,不心动那是不可能的.OK,想用某某某框架,想用某某某技术,但是,因为各种原因,没办法应用到自己开发的项目中.这就是一个天花板. 在工作中往往有各种各样的天花板,比如绩效考核,项目进度,被打断的思路,技术架构.因为你不是做决定的那个人,所以你就有天花板. 绩效考核 很多公司都有绩效考核,在我看来绩

程序员工作效率悖论

程序员看起来是非常高效的人.你经常看到他们在桌子上码字.他们迫不及待的开完会议,快点回到他们的桌子上继续编程.当被问起来为什么这样,他们会说他们没有足够的时间完成编码,越早开始,就能越快完成. 因此写代码一定是最重要的事情,是这样吗? 如果普通程序员每天写50行产品代码.一个50000行的程序需要1000人天来完成.这50000行的代码清单可以由一个程序员一天写1000行左右或大概50人天完成. 那么开发者剩余的950天到底做了什么? 在回答这个疑问之前,让我们做一个简单的观察.Capers J

一点准程序员工作经验总结

程序|程序员 做asp程序开发工作两个多月,总结了一下开发过程中的经验以及从别人那里获得的间接经验,结合实际工作中的情况,随便写了一下.当然不可能把所有有用的经验都罗列出来的,但至少已经有一定的工作指导作用了,拉下的经验或者你自己的亲身经验,请回帖补充一下,谢谢 1.所有的超级管理员初始帐户为admin,初始密码为www.21hb.com:2.在发布之前要经过至少2个人的测试:3.对链接使用使用ALT和Title属性:4.设置IMG的width和height属性:5.对数据库的操作一般要包含增加

提高程序员工作效率 推荐7个简易web开发框架

中介交易 SEO诊断 淘宝客 云主机 技术大厅 时下各种软件系统发展越来越复杂,尤其是服务器软件,其涉及的问题以及知识面太多.因此,在某些方面,如果程序员想要减少开发工作量或是缩短时间,降低成本等,使用框架便是一个很好的选择.而web开发框架的数量非常多,下面,IDC评述网整理了7个简单的开发框架,供大家参考. 1. EasyJWeb EasyJWeb是基于java技术,应用于WEB应用程序快速开发的MVC框架,利用Velocity作为模板页面引擎,实现了页面及代码完全分离的MVC开发框架.能实