API PHP 中的通话时间规定
API Call Time Regulation in PHP
所以我不是 100% 确定如何提出这个问题。我正在构建一个网站,该网站将多次调用 API 来收集和存储信息。不足为奇。经过一些测试和理论分析后,我可以很容易地打破施加在 API 上的每秒 30 次调用的限制,如果该站点收集的流量与我预测的一样多。这些调用将由一个 cron 启动。然后该脚本将对 API 进行 30 次左右的调用。我需要一种减慢脚本速度的方法,以便每秒进行 5 次左右的调用,数据存储在数据库中,脚本完成,然后在下一分钟的顶部由 crontab 再次 运行 .任何建议表示赞赏。
谢谢,
戴夫
速度
减慢速度很容易:在每个 API 调用之间添加一些 usleep() 调用。您可以对调用进行硬编码,例如每秒 1/5 次,每秒最多执行 5 次,或者您可以记录正在调用的调用次数,并且仅在需要时才开始放慢速度。
更简单的,你可以打5个电话,等1秒钟,然后再打5个电话。
无论您调用脚本的频率如何,这都有效。
防止并发脚本执行
另一件需要担心的事情是重叠调用(运行同时多次调用脚本)。显然,如果您最终多次使用脚本 运行,那么您输入的时间并不重要。
如果您很少调用该脚本,并且绝对确定它不会重叠,那么您可以什么也不做。
可以肯定的是,您可以实施锁定机制。这可以像您在脚本启动时检查的锁定文件一样简单。如果存在,则退出。否则,创建锁定文件,运行 脚本,然后删除锁定文件。作为故障保险,您不仅可以检查它是否存在,还可以检查它是在过去一小时内创建的(或您想要使用的任何安全边际)。
所以我不是 100% 确定如何提出这个问题。我正在构建一个网站,该网站将多次调用 API 来收集和存储信息。不足为奇。经过一些测试和理论分析后,我可以很容易地打破施加在 API 上的每秒 30 次调用的限制,如果该站点收集的流量与我预测的一样多。这些调用将由一个 cron 启动。然后该脚本将对 API 进行 30 次左右的调用。我需要一种减慢脚本速度的方法,以便每秒进行 5 次左右的调用,数据存储在数据库中,脚本完成,然后在下一分钟的顶部由 crontab 再次 运行 .任何建议表示赞赏。
谢谢, 戴夫
速度
减慢速度很容易:在每个 API 调用之间添加一些 usleep() 调用。您可以对调用进行硬编码,例如每秒 1/5 次,每秒最多执行 5 次,或者您可以记录正在调用的调用次数,并且仅在需要时才开始放慢速度。
更简单的,你可以打5个电话,等1秒钟,然后再打5个电话。
无论您调用脚本的频率如何,这都有效。
防止并发脚本执行
另一件需要担心的事情是重叠调用(运行同时多次调用脚本)。显然,如果您最终多次使用脚本 运行,那么您输入的时间并不重要。
如果您很少调用该脚本,并且绝对确定它不会重叠,那么您可以什么也不做。
可以肯定的是,您可以实施锁定机制。这可以像您在脚本启动时检查的锁定文件一样简单。如果存在,则退出。否则,创建锁定文件,运行 脚本,然后删除锁定文件。作为故障保险,您不仅可以检查它是否存在,还可以检查它是在过去一小时内创建的(或您想要使用的任何安全边际)。