Cron Job - php脚本 - 多个用户?

时间:2016-05-05 21:24:55

标签: php curl cron

为多个用户执行cron-job自动化的最佳方法是什么?

示例

一个cron-job需要每10分钟运行一次调用PHP脚本,该脚本连接到外部API(通过curl )并收集用户收到的数据(站点访问者和其他数据)外部网络资产。我们需要每隔10分钟定期检查一次,如果有任何新数据可供该用户使用并获取它 - 以及网络应用中的对于每个用户

对API的这种cron-job PHP脚本调用通常需要每个用户1-3秒,但有时可能需要长达30秒或更长时间才能完成一个用户(在特殊情况下)。

问题 ...

执行此过程和收集MULTIPLE用户的外部数据的最佳方法是什么? 数百甚至数千名用户?

对于每个用户,我们需要每10分钟检查一次数据。

最初我想在一个循环中连续调用10个用户进行一次cron-job调用,但由于每个用户集合可能需要30秒...对于10个用户来说,一个循环可能需要几分钟而且......脚本可能超时?正确的吗?

对于如何最有效地为许多用户执行此过程,您是否有一些提示和建议?应该为每个用户使用单独的cron作业吗?而不是循环?

谢谢!

===编辑===

假设一个PHP脚本可以在1分钟内为10个用户调用API ...我可以创建10个cron-jobs,它们基本上同时调用相同的PHP脚本,但是每个脚本收集不同批次的10个用户?这样我可以在一分钟内获得100个用户的数据?否?

看起来像这样:

/ usr / local / bin / php -q get_data.php?users_group = 1

/ usr / local / bin / php -q get_data.php?users_group = 2

/ usr / local / bin / php -q get_data.php?users_group = 3

依旧......

这会起作用吗?

===注意===

每个用户都有一个带有外部API服务的唯一访问密钥,因此一次只能为一个用户进行一次API调用。但API可以同时为不同的用户同时接收多个呼叫。

1 个答案:

答案 0 :(得分:2)

如果用户需要30秒,并且您拥有超过20个用户,则在您需要重新开始之前,您将无法完成。我会考虑使用GearMan或其他作业服务器以异步方式处理每个请求。 GearMan还可以等待作业完成,因此您应该能够遍历您需要制作的所有请求,然后等待它们完成。你可以用PHP的pthread实现完成同样的事情,然而,这将变得更加困难。

相关问题