【发布时间】:2015-10-22 13:38:57
【问题描述】:
要求
我有一个网络应用程序,它允许用户安排一些社交媒体任务,例如在 Facebook 或 Twitter 上发帖。
每个用户都可以让应用随时(14:00、15:11、17:54...)在他的社交媒体帐户上发布。
除此之外,我还需要每天为每个用户完成其他任务,例如获取他们的关注者/朋友或在 Twitter 上取消关注他们的人。
情况
到目前为止,我已经为每个任务创建了一个文件(post.php、getFollowers.php、analytics.php...)。例如:
post.php
我为此脚本创建了一个 cron 作业,它每分钟检查是否必须发布某些帖子。假设我们运行脚本,此时它找到了三个想要发推文的用户,它将使用 foreach 循环迭代用户并在每个帐户中发帖。
...其他脚本也这样做:获取每个想要做某事的用户,创建一个队列并对其进行迭代。
问题
- 发布任务需要按时完成。
- 获取关注者之类的长任务需要每天运行。
(1) Twitter 和 Facebook 发帖需要 30-40 秒,所以如果有 5 个用户想在 14:00 发帖,那么 3、4 和 5 就晚了。
(2) 获得一个用户的一些追随者需要 40-60 秒,因此只有 1000 个用户,脚本将花费 11-16 小时,这绝对是不可扩展的。我应该能够在 2-3 小时内完成这项任务。
解决方案?
我认为我可以通过分离用户任务并为每个用户执行一个进程来解决这两个问题。
这是一个正确且可扩展的解决方案吗?您将如何以可扩展的方式解决这些问题?
提前致谢。
【问题讨论】:
-
那没有用。
exec()阻塞,直到您正在执行的任何操作完成。您必须将该工作放在后台,例如exec('somejob &'),然后引发了一系列其他问题。 -
@MarcB 谢谢马克。我不知道。有什么建议吗?
-
你的架构是什么样的?你有工人等级吗?这个article 可能很有趣。
-
可能值得研究 AWS 或其他云服务以卸载大量进程而不必担心您的服务器性能
-
@FrancisEytanDortort 我在 Hostgator 上有一个简单的共享服务器。有趣的文章。但是他们如何使用一个脚本按时发布每个用户的帖子呢?