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

这个话题已经讨论了很长时间。在面试必须考核的能力中,我个人认为解决问题的能力是第一位的,高于学习能力。解决问题的能力不仅可以看程序员的思维能力、适应能力、探索能力等,还可以看他的经验。如果你解决问题的能力很差,你就不会通过面试。

这是一个例子,如果我执行一个PHP脚本,例如php test.php,期望它可以返回一个字符串。但是执行后没有信息输出。我怎么知道这个时候程序出了什么问题?在这里,解决问题的能力可以分为8个等级,越靠后的表达能力越强。

Lv0 查看 PHP 错误信息

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

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

图片[1]-关于PHP程序员解决问题的能力-唐朝资源网

注意:开启错误显示的方法是

php.ini /rs 设置为 On

在 php.ini 中设置为 E_ALL

在 PHP 代码中设置 (E_ALL)

lv1有多个版本的php或者php-cli和php-fpm加载不同的配置

php有多个版本,通过哪个php知道哪个php,或者添加绝对路径制作一个php版本。表示这个 PHPer 已经通过了这个级别的 50% 测试。

还有一种情况是php-cli和php-fpm得到的执行情况不同。比如在web浏览器中执行是正确的,在cli下执行是错误的。这时候两个环境加载的php.ini可能不一样。cli下通过php -i |grep php.ini获取加载了哪个php.ini。fpm下可以通过()函数获取php.ini的绝对路径。

Lv2 /die 打印变量值信息单步调试

这是程序调试的常用方法,也是解决问题最简单粗暴有效的方法。更高级的方法是使用 PHP 的 Trace 类/日志类,花哨的可以在 IDE 工具中使用 + 进行调试。

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

这三项测试都通过了,说明程序员已经具备了专业PHP程序员应有的解决问题的能力。PHP程序员只要通过这个级别,就足以应付大多数情况,对中小型网站毫无压力。

Lv3 使用工具跟踪程序执行

可以用来查看系统调用的执行情况,使用php test.php,或者-p 进程id。它可以帮助你通过现象看本质,掌握程序执行的过程。这种方法最常用于大型网站和大公司。如果你不知道,我只能在这里说声对不起,我们不接受不能接受的PHPer。

其实也是对程序员基础的考验。如果你不知道操作系统怎么操作,根本不懂底层,那你肯定用不上。当然,无法解决 PHP 代码中的无限循环。比如你找到一个php-fpm %,恐怕解决不了。因为依赖于系统调用,所以一般是IO类型的操作。由于是 IO 密集型的,所以 CPU 一定不能 100%。

Lv4使用工具分析网络通信过程

可以抓到网卡的数据通信过程,甚至可以抓到数据内容。使用它,可以看到网络通信过程是什么样子的,什么时候发起 TCP SYN3 握手,什么时候发送 FIN 包,什么时候发送 RST 包。这是一项基本技能。如果你不明白,就证明你没有解决网络问题的能力。

Lv5统计函数调用时间和成功率

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

另一个对网络服务的调用,如mysql查询、curl、其他API调用等,可以通过在记录的开头和结尾记录是否返回false来获取调用是否成功以及需要多长时间。如果可以汇总数据,整理出调用成功率、失败率、平均延迟,证明程序员对界面质量敏感,有大型网站项目经验。

Lv6 gdb 使用

Gdb 是 C/C++ 调试器的强大工具。只有具备一定 C/C++ 技能的程序员才能熟练使用 gdb。php程序如前所述无法被追踪,而gdb可以被追踪。此外,gdb还可以解决php程序的core dump问题。

通过 gdb -p 进程 ID 和 php-src 。和其他工具,您可以轻松跟踪 PHP 程序的执行情况。和上面的 % 一样,PHP 程序中经常会出现死循环。用gdb多次查看后,大致可以得到死循环的位置。很少有 PHP 程序员有能力用 gdb 解决问题。如果能用gdb解决PHP问题,100%的PHPer都能通过面试,可以获得很高的技术评价。

Lv7 查看 PHP 内核和扩展源代码

如果你熟悉 PHP 内核和扩展的源代码,你也可以有能力解决 PHP 程序中最复杂的内存错误。这样的 PHP 程序员很少见。使用gdb工具,熟悉PHP源码,可以查看全局变量的信息、内存、状态等。

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容