PHP写文件为空 0字节 的问题和解决方案

鉴于在各论坛签到的斐然成绩,为了确保在猫扑800+天的连续签到记录,特意写了一个非GAE版的PHP Cron代码在多个主机上跑。程序在SAE上运行正常,但在个人主机上跑的有些问题,两天之内配置文件肯定会变成0字节,因为SAE上使用了KVDB,不涉及文件读写,所以没有这个问题。
开始觉得可能是在写入文件时判断的不够,因为数据问题造成待写入的字串是空串了,但经过一番保护仍不起作用。于是加入了retry机制,在写入失败时隔几秒再写一次,但仍不起作用。
最后想到唯一的问题在于这个配置文件可能因为多个排程在同一时间点运行而出现并发写入,此时不会报写入错误,但文件为空。Google后找到CHM中没提到的一个file_put_contents参数,LOCK_EX,在操作文件时加文件锁。修改后,世界恢复了平静,我的签到机器人,继续向前冲吧!

发表评论

电子邮件地址不会被公开。

CAPTCHA image
*