我正在对基于PHP / MySQL的网络应用程序进行一些反馈,我正在开发中。该应用程序是一个基于成员的站点,它使用本地数据库按天存储每个用户的数据。此数据来自外部API,需要每天自动同步,以便我的本地数据库具有最新数据。这是我想到的方法:
队列生成器
队列工作者
用户数据(存储我目前所拥有的任何用户数据,如果有的话)。
用户详细信息(包含我尚未拥有数据的用户的所有成员列表,也称为新注册)。
Queue Builder 是一个PHP脚本,它将定期通过Cron运行。它会:
比较用户详细信息和用户数据表,以确定哪些新用户尚未拥有任何数据。对于这些用户,它将构建一个从1/1/11开始到当天的URL列表,并将它们插入到处理队列表中(这是因为我希望从一开始就有数据)我所有用户的一年)。
分析用户数据表,查找上次同步每个用户数据的时间,并构建从上次同步日期到当天的网址列表。这些也将插入处理队列表。
这样处理队列表将包含需要查询的所有网址的列表。
队列工作者 也是一个PHP Cron脚本,它将:
这也将通过Cron作业定期运行,因此我们的想法是数据同步应该是自动化的,用户应该拥有最新的数据。我的问题是:
我的方法有哪些一般性的想法?这样做会有副作用吗?我是一个没有CS背景的业余爱好者,所以总是热衷于批评和学习最佳实践! =)
当一个新用户注册时,我打算给他们一个“你的数据需要xx分钟才能同步”,同时将它们重定向到Getting Started资源等。这对我的初始版本可能没问题,但是进一步下来该曲目我想对其进行优化,以便用户在同步准备就绪时收到电子邮件通知,或者可以看到%进度。我目前的解决方案是否容易适应这种情况?或者我会在赛道上头痛吗?
意见表示赞赏!很多,非常感谢提前 - 我希望我已经清楚地解释了这一点!
答案 0 :(得分:0)
我能给你的最佳建议可能是:亲吻!不,我不是过分亲热,这代表“保持简单,愚蠢!”并且可以说是一个非常重要的工程原理。考虑到这一点,我要问的第一个问题是“为什么要用cron?”当用户注册时,是否可以实时运行所有这些任务?如果是的话,我现在就说现在就这样做,不要打扰cron。如果您决定使用cron模块,我建议您使用以下内容:
HTH。