在PHP中安排大量任务的最佳方式

问题描述:

我目前正在Laravel(PHP)中构建一个用于从不同主机检索价格的API。目前有756个不同的“硬币”与不同的主机从中检索价格。在PHP中安排大量任务的最佳方式

例如:硬币X

主机1 主机2 主机3 - 高达30个主机

投币ý

主机1个 主机4 主机5 - 高达30主机 等

这里的问题是,理想情况下,每个硬币应每10秒更新一次。这意味着每个硬币需要调用其所有主机,计算平均价格,将价格保存在数据库中,最后保存一个包含硬币历史记录的JSON文件。 (也许这会更好地节省当前价格作为JSON以节省一些时间)

我试图把所有这些放在每个主机的类中,但执行时间太长(大约5分钟使用CURL)。

我正在考虑为每个硬币创建一个任务(cron job)。这样硬币的'更新'可以同步(多个硬币一次)。但我不能确定这将是最好的方式。

你们会推荐什么样的方法?所有提示都欢迎。

您的整体更新时间将受到硬币数量x个别主机更新速度的限制。您可能需要花费一个(或平均)请求花费多长时间(使用脚本)来查看整个事件需要多长时间。因为,如果它可能需要很长时间,一个接一个地执行它们,您将不得不将它设置为并行(同时)请求。

+0

嗨海登,感谢您的支持。 1次请求的平均时间约为。 500 - 700毫秒。如果我理解正确,你会建议把所有的请求放在CURL_MULTI中吗?我还没有测试过,但一个很好的电话。 – Thjeu

+0

我没有太多的关于CURL(只有简单的请求),没有谷歌搜索,我不知道它是否可以同时做同步请求。但是任何你能做到的方式都值得一试。您仍然可能需要一个cron作业来定期调用php脚本,无论您是在一个函数中执行多重调用还是多次调用函数。 –

+0

哇,我刚刚用curl_multi运行整个过程并将时间缩减到12秒。这很棒。我可以从这里进一步工作。非常感谢Hayden! – Thjeu