【问题标题】:PHP unlink function and cron jobPHP取消链接功能和cron作业
【发布时间】:2017-12-14 09:53:03
【问题描述】:

我正在使用 cron 作业来执行一个用于发送消息的 php 文件。在将由 cron 作业命令运行的 php 文件的末尾,我将添加 unlink(__FILE__);

此取消链接功能是否会在发送完所有消息后删除当前文件?

我不确定这就是我要问的原因,因为发送消息需要一些时间,我希望在发送所有消息后删除我的文件,而不是在中间删除。

第二;如果发送消息出错怎么办? 如果有任何错误,如何通知我? 因为该函数已经删除了 php 文件! 如果有任何错误,我如何找出错误?

【问题讨论】:

  • 如果您取消链接文件,究竟是什么让您关心错误?这就像消灭一个人口,然后关心他们的人口统计数据。记录不再存在的文件没有任何意义。不要删除文件。

标签: php cron unlink


【解决方案1】:

这不是要走的路。基于删除源代码创建功能是您不想遵循的道路。一个搞砸了,另一个文件可能会被删除,一个没有备份(但我们都有备份,对吧?;))

相反,我建议您简单地更新您的数据库。你有你的消息存储。发送每条消息后,更新数据库并设置sent=1。下次您运行此脚本时,它应该忽略所有 sent=1 的位置,现在您不会发送重复项。
您现在还可以根据消息检查是否有错误并记录下来。如果一切顺利,您还可以将数据库更新到消息发送的时间。


回答实际问题:应该。这可能是时间或编码错误。这很难调试,因为文件会自行删除;)

【讨论】:

    【解决方案2】:

    我不知道您是如何发送这些消息的,但是如果您的脚本使用同步方式(如 SMTP 服务器)来执行此操作,因为您的脚本是按顺序执行的,所以每次都会调用 unlink() .

    对于错误处理,我建议您将它们记录到文件或数据库中。您可以使用Monolog 等广泛使用的库来轻松完成。

    【讨论】: