php debug二三事

综合编程 2018-12-07 阅读原文

最近php相关项目遇到了一些问题,处理起来让人感觉挺有意思,寥寥记下。

1. php执行后常驻内存里,需要 kill 掉该进程再重启,才能让修改后的代码生效。

之前有一次组里小伙伴修改了一个长期后台进程运行的 php脚本,增加了一些业务逻辑判断。之后我进行部署之时一直忘记将其php进程kill掉,测试的时候一直找不到未生效的原因。后面想到了后台持续run的脚本是从内存里面读取的代码块,而不是加载最新的代码脚本。对于php我们常常脑补无需重启(如node)或者编译(java)直接生效,但是对于一直运行的脚本不然。

Tips 2 如果使用 ps aux | grep xxx来判断脚本是否运行,请尽量 精准 grep

又是一次后台进程任务的添加,采用方式的是 shell脚本监控php进程并维护其始终运行。这次我因为事情比较忙,让F君自己动手在测试服上写好shell去执行。后面发现一直没有成功run起来php任务。

我先尝试了直接 php 命令执行 php 脚本是没问题的,排查了脚本本身的问题。然后又仔细看了一下 shell 发现也没什么问题,最后通过对比之前的写法,发现是因为在判断是否有 php 脚本进行的时候用的 grep 不够精准,如下图。

很凑巧的是, F 君写的 shell 脚本的名字也是 new_notice ,和 php 脚本名撞名了。所有尽管 shell 里面是 while true 的死循环,但是每次检查都会发现有叫 new_notice 的进程(因为同名 shell 脚本一直保持运行),故而不会进行启动 php 进程的逻辑块,后台任务也永远无法执行。养成习惯精准 grep 或者将 shell 脚本名改为更抽象的名称都是不错的方法。但是本质是 grep 要精准到脚本全称,包括文件扩展后缀名。

Tips 3 报错要重视,框架要熟悉。

为了减少老框架的束缚,我鼓励组内小伙伴在一些业务牵连不大的新项目中尝试使用新的框架来做业务。今天刚好是新的统计服务部署到线上的时间,我刚部署完后, F 君和我说 mongo auth failed 。经过一顿 baidu 后,发现需要在 tp5 mongo driver 实现里面修改源码,把 MongoDBDriverManager 的连接 URI 最后加上 database 参数。尝试添加后不再报 auth failed 的错误,却直接页面显示该网站永久性转移。去掉后又报 auth failed ,对比线上和测试服的代码和 mongo 扩展版本都没有什么问题,也曾怀疑过两个环境的 mongo sever 版本问题,发现差异也不大。

经过一顿猛如虎的操作,最后发现是因为项目根目录下没有 runtime 目录造成的。一边赶地铁回家,一边刷着知乎的我发誓以后一定要重视框架的细节,细节决定很多步,包括下一步。

博客园精华区

责编内容by:博客园精华区阅读原文】。感谢您的支持!

您可能感兴趣的

深入理解PHP opcode优化 1.概述 PHP(本文所述案例PHP版本均为7.1.3)作为一门动态脚本语言,其在zend虚拟机执行过程为:读入脚本程序字符串,经由词法分析器将其转换为单词符号,接着语法分析器从中发现语法结构后生成抽象语法树,再经静态编译器生成opco...
find results of attributes in mongodb are always u... I really really need help in this. I am using node.js with mongodb and mongoose. So far I've managed to cr...
The statement prepared by PHP does not work I am making a prepared statement in PHP and my code is fine until I add in 'id' and 'key' to my parameters. They are def...
bcache and lvmcache Background Over at BitFolk we offer both SSD-backed storage and HDD-backed archive storage . The SSDs we use are real...
Cryptocurrency Miner Distributed via PHP Weatherma... Legitimate and large-scale cryptocurrency mining operations often invest in dedicated hardware and electric consumption...