我正在构建一个小型应用程序,要求人们通过电子邮件上传图像。它使用MySQL和S3构建在PHP(无框架)中。
到目前为止,在我的场景中:电子邮件存储在POP3帐户中。脚本每分钟运行一次,获取最旧的电子邮件,调整图像大小,将其上传到S3,将其路径存储在数据库中,删除电子邮件。
在更大范围内,如何管理? cron工作是处理这种情况的最佳方式吗?如果这个过程花费的时间超过一分钟会怎么样:它会重叠并最终失败,对吧?或者如果不到一分钟呢?考虑到我会以更大的规模每小时发出超过60个请求,我会得到不必要的空闲时间......
也许我应该使用.forward文件处理电子邮件,但我再也不会控制流程。
我相信大多数情况都有效,我对最佳做法感到好奇。
谢谢!
答案 0 :(得分:3)
稍加修改的方法可能是:
如果上次完成的备份超过一定时间,我曾经有一个备份程序,每小时备份一次客户目录。这种做法很有效,直到一些客户拥有太多Gb数据并且脚本需要一个多小时来进行备份。
如果没有检查,下一个小时脚本将再次运行同一个客户,这将花费一个多小时,依此类推,直到机器变得无响应并且运行级别非常高。
我实现的修复是描述的检查,如果另一个实例正在运行,只需退出并等待下一个周期。在修复之后,我多年来一直没有遇到过问题。
答案 1 :(得分:1)
尝试长时间运行的过程。它检查邮件,并处理所有邮件。如果它完成后无法再找到邮件,那么它会进入睡眠状态一分钟。
如果您遇到稳定性问题,可以随时使用supervise。