我有一个我编写的php文件,用于检查某些文件夹中的新文件,然后通过电子邮件发送自上次运行以来的最新文件。有时这可能是10-15个文件附加到电子邮件。我正在使用swiftmailer发送电子邮件。
此脚本最多可循环50个客户,每个客户都可以拥有需要通过电子邮件发送的文件。通常,这将通过PHP超时并抛出错误。我一直试图通过php将客户编号写入文件来追踪它停止的位置。
如何使用PHP说“如果出现突然退出或错误,请重新运行此文件。”
另一种说法是....当我收到超时错误或任何其他错误时,我可以简单地重新加载另一个PHP文件继续我离开的地方吗?
这似乎不是完成任务最干净的方式,所以我愿意接受建议。
答案 0 :(得分:3)
您可以通过写入平面文件或数据库来跟踪要处理的文件,并在完成后删除每个文件的条目。当脚本重新启动时,请读取要处理的文件列表,并从上次停止的位置继续。
此外,如果您知道脚本经常需要更多时间,请考虑增加php.ini中的超时设置。
如果您需要不断重启脚本直到处理完成,请考虑以下情形:
使用PID文件并非绝对必要;您可以通过检查日志是否存在并具有条目来获取相同的信息。但是,PID的使用是传统的,并且提供了一种快速且廉价的方法来确定先前的过程是否成功完成。