【发布时间】:2017-02-27 18:27:18
【问题描述】:
我正在尝试使用 PHP 创建一个网站监控 webapp。目前,我正在使用 curl 收集来自不同网站的标头,并在网站状态发生变化时更新 MySQL 数据库(例如,如果“启动”的网站变为“关闭”)。
我正在使用 curl_multi(通过我稍微调整的 Rolling Curl X 类)并行处理 20 个站点(这似乎给出了最快的结果)和 CURLOPT_NOBODY 以确保只收集标题并且我已经尝试简化脚本以使其尽可能快。
它工作正常,我可以在大约 40 个网站上处理。 2-4 秒。我的计划是每分钟通过 cron 运行脚本......所以看起来我每分钟能够处理大约 600 个网站。虽然目前还可以,但从长远来看是不够的。
那么我该如何扩展呢?是否可以并行运行多个 cron,或者这会遇到瓶颈问题吗?
我突然想到我可以将数据库分成 400 个组并为这些组运行单独的脚本(例如 ids 1-400、401-800、801-1200 等可以单独运行脚本),因此不会有数据库损坏的危险。这样每个脚本都将在一分钟内完成。
但是感觉这可能行不通,因为运行 curl_multi 的一个脚本似乎在 20 个并行请求时最大限度地提高了性能。那么这会奏效还是有更好的方法?
【问题讨论】: