`
liu86th
  • 浏览: 118026 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

【转】关于PHP程序员解决问题的能力

    博客分类:
  • PHP
阅读更多

这个话题老生长谈了,在面试中必然考核的能力中,我个人认为解决问题能力是排第一位的,比学习能力优先级更高。解决问题的能力既能看出程序员的思维能力,应变能力,探索能力等,又可以看出他的经验。如果解决问题能力不佳是无法通过面试的。

这里举个例子,假如我执行了一个PHP的脚本,如php test.php,预期是可以返回一个字符串。但执行后没有任何信息输出,这时候通过什么方法能知道程序错在哪里?这里可以将解决问题能力分为8个等级,越到后面的表示能力越强。

 

Lv0 查看PHP错误信息
程序没有达到预期效果,证明代码出错了,看PHP的错误信息是第一步。如果直接忽略错误信息,表明这个人不适合担任专业的程序员岗位。有些情况下php.ini配置中关闭了错误显示,需要修改php.ini打开错误信息,或者错误信息被导出到了日志文件,这种情况可以直接tailf php_error.log来看错误信息。

拿到错误信息后直接定位到程序代码问题,或者到Google/百度搜索,即可解决问题。

注:打开错误显示的方法是

php.ini中display_errors / display_startup_errors 设置为On
php.ini中error_reporting 设置为E_ALL
PHP代码中设置error_reporting(E_ALL)

 

Lv1 存在多个版本的php或php-cli与php-fpm加载不同的配置
存在多个版本的php,懂得通过which php来看是哪个PHP,或者加绝对路径制定php版本。表示此PHPer通过了此层级的50%考验。

另外一个情况就是php-cli与php-fpm得到的执行情况不一样,如在web浏览器中执行是对的,cli下执行是错的。这时候可能是2个环境加载的php.ini不同所致。cli下通过php -i |grep php.ini得到加载了哪个php.ini。而fpm下通过phpinfo()函数可以得到php.ini的绝对路径。

 

Lv2 var_dump/die打印变量值信息单步调试
这是惯用的程序调试手段,也是最简单粗暴有效的解决问题方法。高级一点的手段是使用PHP的Trace类/日志类,花哨一点的可以借助phpstorm+xdebug在IDE工具里进行Debug。

Trace工具还可以分析脚本的耗时,进行PHP程序的性能优化。

这3个考验全部通过,表明此程序员已经具备了专业PHP程序员应该有的解决问题能力了。PHP程序员只要过了这个等级,就足以应多大部分情况,在中小型网站中毫无压力。

 

Lv3 使用strace工具跟踪程序执行
strace可以用来查看系统调用的执行,使用strace php test.php,或者strace -p 进程ID。strace就可以帮助你透过现象看本质,掌握程序执行的过程。这个手段是在大型网站,大公司里最常用的。如果没掌握strace,这里只能说抱歉了,我们不接受不会strace的PHPer。

strace其实也是对程序员基础的考验,如果不懂操作操作系统,完全不懂底层,肯定也达不到会用strace的程度。当然strace对于PHP代码里的死循环是解决不了的。比如你发现一个php-fpm进程CPU100%了,strace恐怕是解决不了的。因为strace是看系统调用,一般都是IO类操作,既然是IO密集,那CPU一定不可能是100%。

 

Lv4 使用tcpdump工具分析网络通信过程
tcpdump可以抓到网卡的数据通信过程,甚至数据内容也可以抓到。使用tcpdump可以看到网络通信过程是什么样的,如何时发起了TCP SYN3次握手,何时发送FIN包,何时发送RST包。这是一个基本功,如果不懂tcpdump,证明不具备网络问题解决能力。

 

Lv5 统计函数调用的耗时和成功率
使用xhporf/xdebug导出PHP请求的调用过程,然后分析每个函数调用的过程和耗时。能够分析PHP程序的性能瓶颈,找出可以优化的点。

另外一个对于网络服务的调用,如mysql查询,curl,其他API调用等,通过记录起始和结束时microtime,返回的是不是false,可以得到调用是否成功,耗时多少。如果可以汇总数据,整理出调用的成功率,失败率,平均延时,证明此程序员对接口质量敏感,有大型网站项目经验。

 

Lv6 gdb使用
gdb是C/C++调试程序的利器,需要具备一定C/C++功底的程序员才会能熟练使用gdb。上面说的strace无法跟踪php程序CPU100%,而gdb是可以跟踪的。另外gdb也可以解决php程序core dump的问题。

通过gdb -p 进程ID,再配合php-src的.gdbinit zbacktrace等工具,可以很方便地跟踪PHP程序的执行。像上面的CPU100%往往是PHP程序中发生死循环了,gdb进行多次查看,就大致可以得到死循环的位置。具备gdb解决问题能力的PHP程序员少之又少。如果能使用gdb解决PHP问题,这个PHPer百分之百可以通过面试,并且可以拿到较高的技术评级。

 

Lv7 查看PHP内核和扩展源码
如果能熟悉PHP内核和扩展的源码,遇到PHP程序中最复杂的内存错误,也可以有解决的能力。这类PHP程序员就是凤毛麟角了。配合gdb工具和对PHP源码的熟悉,可以查看opcode的信息,execute_data的内存,全局变量的状态等。

 

分享到:
评论

相关推荐

    PHP开发程序员解决问题的能力编程小技巧共3页.pdf.z

    这份名为“PHP开发程序员解决问题的能力编程小技巧共3页.pdf”的资料,尽管我们无法直接查看压缩包内的内容,但可以推测其可能涵盖了提升PHP程序员问题解决能力的一些关键点。通常,这类资源会包括以下几个方面: 1...

    程序员常见问题解决方式

    如果80端口被其他服务占用,导致无法正常启动Web服务,可以按照以下步骤排查并解决问题: - 打开命令提示符,输入`netstat -ano`,查看占用80端口的进程ID。 - 在任务管理器中找到对应进程,结束该进程。 - 然后在...

    PHP程序员面试宝典 笔试 (PHP版).zip

    《PHP程序员面试宝典 笔试 (PHP版)》是一个为准备PHP程序员面试者精心编纂的资源包,其中包含了丰富的PHP技术知识和面试常见问题。这个压缩包中的核心文件是"PHP程序员面试宝典 笔试 (PHP版).pdf",它很可能是详细...

    PHP程序员面试自我介绍.pdf,这是一份不错的文件

    思维能力是 PHP 程序员的核心能力之一,只有具备良好的思维能力,PHP 程序员才能更好地解决问题。 第四,PHP 程序员需要具备良好的团队合作能力,包括主动愿意与他人合作,并与其他成员进行沟通交流、知识和资源的...

    php程序员必备手册

    这四个手册的组合,为PHP程序员提供了全面的学习和参考资料,不仅可以加深对PHP的理解,还能拓展到JavaScript、CSS和Perl的相关知识,提高跨语言的综合能力。在实际开发过程中,这些手册能有效地提高工作效率,解决...

    PHP程序员面试宝典1.zip

    面试中可能会询问你对某款框架的理解,以及如何使用它来解决实际问题。 Web安全方面,理解如何防止SQL注入、XSS攻击、CSRF攻击至关重要。此外,了解如何设置和使用session、cookie,以及理解HTTP头部的安全设置,如...

    PHP程序员常备手册

    本手册旨在帮助PHP程序员提升技能,解决日常开发中的问题。 1. **PHP基础**:PHP的基础知识包括变量、数据类型(如字符串、整型、浮点型、布尔型、数组、对象等)、流程控制(条件语句、循环结构)、函数(内置函数...

    php面试题(普通PHP程序员笔试题,普通PHP程序员面试题)

    面试中,面试官可能还会关注候选人的实际项目经验、问题解决能力、代码阅读与重构技巧、对最新PHP版本(如PHP 7及以上)的了解,以及对框架(如Laravel、Symfony、Yii等)的熟悉程度。熟悉这些知识点将有助于在面试...

    PHP程序员面试的自我介绍.pdf,这是一份不错的文件

    PHP 程序员面试自我介绍知识点 ...PHP 程序员面试自我介绍需要涵盖职业道德、工作态度、客户交流沟通能力、思维能力、团队合作能力、主动性、技术能力、文档撰写能力、独立分析和解决问题能力等多方面的内容。

    php程序员专用

    作为"PHP程序员专用"的资源包,它包含了PHP程序员在日常工作和学习中所需的重要资料,是提升技能、解决问题和提高效率的必备工具。这个压缩包被称为"PHP手册大全",暗示其中可能包含了丰富的PHP参考文档和教程,对于...

    上海php程序员招聘调查报告

    29. 强大的问题分析和独立解决能力,出色的沟通和协调能力,以及敬业精神。 30. 优先考虑有大型流量网站工作经验者。 综合以上分析,上海PHP程序员的招聘不仅看重技术能力,还强调持续学习、团队协作和项目管理能力...

    php程序员试用期工作总结.doc

    * PHP程序员提出了不断锻炼自己的胆识和毅力,提高自己解决实际问题的能力,并在工作过程中慢慢克服急躁情绪,积极、热情、细致地对待每一项工作。 四、总结和展望 * PHP程序员在试用期内总结了自己的工作情况,...

    php程序员工具箱v0.6集成环境

    PHP程序员工具箱v0.6是一款专为PHP开发者设计的集成开发环境,旨在提供一站式的解决方案,帮助开发者更高效、便捷地进行PHP项目的开发、调试和管理。这个版本的工具箱集合了多种实用功能,以满足PHP程序员在日常工作...

    北京php程序员调查报告

    10. **管理与协调**: 能规划、组织和指导团队开发,有较强沟通协调和快速解决问题的能力。 11. **其他技能**: 精通多种软件如PHP、MySQL、HTML、XML、CSS、Java、JavaScript、Flash和Web图形设计。 12. **工作经验**...

    php程序员用到的手册 php手册 Smarty完全中文手册 Zend_Framework手册 CSS手册

    这些手册涵盖了PHP编程、Smarty模板引擎、Zend Framework框架以及CSS样式表的重要知识,对于PHP程序员来说是必备的参考资料。...通过深入学习和查阅,可以更好地理解和应用这些技术,解决实际开发中遇到的问题。

    PHP 4.0程序员参考.rar

    HELP.pdf:这个名字暗示了这是一个帮助文档,可能提供了PHP 4.0中的一些常见问题解答,或者是一份快速参考指南,帮助开发者解决在编程过程中遇到的问题。 01.pdf:通常此类文件会介绍PHP的安装和配置过程,包括如何...

    程序员必备算法知识

    在IT行业中,算法是程序员解决问题的关键工具,它们是编程的基础,能够帮助我们高效地处理数据和执行任务。本文档集合中的四个PHP文档深入探讨了程序员应掌握的一些经典算法,这对于提升编程技能至关重要。 首先,...

    php程序员简历

    - **解决问题的能力**:面对问题时能够冷静分析并提出有效解决方案。 - **适应能力强**:能够在不断变化的工作环境中快速调整适应。 - **承压能力**:即使在高压下也能保持高效工作状态。 - **学习能力**:持续学习...

    谢华亮 PHP程序员的选择.zip

    开源社区如GitHub提供了丰富的学习资源,同时也能积累实际项目经验,提升解决问题的能力。 总的来说,“谢华亮 PHP程序员的选择”这份资料将带领读者深入理解PHP开发的各个方面,从基础到进阶,从技术到职业规划,...

    php程序员工具箱集成环境

    XAMPP、WAMP或MAMP等本地开发环境套件,为PHP程序员提供了在本地运行Apache、MySQL和PHP服务器的能力,便于在部署前进行测试和调试。此外,Xdebug等调试工具可以帮助找出代码中的错误,提供详细的错误报告和性能...

Global site tag (gtag.js) - Google Analytics