【问题标题】:Delayed Function in PHPPHP中的延迟函数
【发布时间】:2013-11-30 18:24:39
【问题描述】:

我正在开发一个包含 YouTube 视频集合的 Wordpress 网站。当新视频被添加到网站时,它会使用 YouTube 的 API 将某些信息(视频的时长、喜欢的数量、观看次数等)提取到网站的数据库中。

问题是这些信息很快就会过时,所以我需要一种方法来定期刷新视频信息。

我原本打算每天晚上只使用 wp-cron 并循环浏览所有视频并更新它们,但我达到了 YouTube 拉取视频信息的速率限制 - 过了一会儿它只返回 403 Forbidden 错误。

有没有一种方法可以编写代码,例如,浏览前 50 个视频,等待 5 分钟,然后执行接下来的 50 个,直到它们全部更新?

【问题讨论】:

  • 您是否正在寻找睡眠常规? ;-)
  • 这会导致性能问题吗?我已经在 API 调用之间添加了 500 毫秒的睡眠时间的脚本,我不确定在处理视频块之间使用 5 分钟的睡眠时间是否是个好主意。
  • 余说你要等 5 分钟让它休眠才能使用 ;-)。相反 - 只需更慢地查询 youtube - 在连续请求之间添加 100 毫秒的延迟等 - 类似的效果。根据您的系统,您可以使用调度程序或 cron 并定期运行您的脚本 - 一切都取决于...
  • 我在请求之间已经有 500 毫秒的延迟,但我仍然很快达到了限制。我找不到 YouTube 的 API 限制的确切描述 - 文档基本上说,如果你没有做任何坏事,你就不会受到限制。

标签: php wordpress youtube-api


【解决方案1】:

执行此操作的最简单方法是提取视频列表并添加一个字段(如 DATETIME),以指示您上次刷新它们的时间。然后将查询限制为仅获取前 50 行,并按DATETIME DESC 对查询进行排序。这样可以确保您始终首先获得最陈旧的内容。然后让你的 cron 每 X 分钟运行一次,然后让它飞起来。

【讨论】:

  • 好主意!我会试试的。
  • 成功了。我现在每小时分批更新 50 个 YouTube 视频信息。这意味着即使系统中有超过 1,000 个视频(在一段时间内不太可能),它们也会在 24 小时内全部更新。
【解决方案2】:

你可以使用 sleep (300);但你必须 set_time_out (0);所以脚本不会超时。

【讨论】:

    猜你喜欢
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2012-12-08
    相关资源
    最近更新 更多