【问题标题】:How to delay execution of script while using Laravel's chunk feature?如何在使用 Laravel 的块功能时延迟脚本的执行?
【发布时间】:2017-05-15 19:27:28
【问题描述】:

我试图在使用 Laravel 的 chunk 方法处理 200 条记录后将脚本的执行延迟几秒钟。这就是我现在所拥有的。我应该在某个地方放一个柜台吗?但那我相信这行不通,还有其他技术吗?

    Article::chunk(200, function ($articles)
    { 
        foreach ($articles as $article)
        {

        }

    });

感谢 WereWolf,它成功了。简直不敢相信这么简单。

[2014-08-27 07:18:23] local.INFO: Article metrics:198 [] []
[2014-08-27 07:18:24] local.INFO: Article metrics:199 [] []
[2014-08-27 07:18:24] local.INFO: Article metrics:200 [] []
[2014-08-27 07:18:30] local.INFO: Article metrics:201 [] []
[2014-08-27 07:18:34] local.INFO: Article metrics:202 [] []

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    你可以使用sleep函数,例如:

    Article::chunk(200, function ($articles) {
    
        foreach ($articles as $article) {
    
            // ...
    
        }
    
        sleep(2); // Delay the script execution for 2 seconds
    });
    

    【讨论】:

    • 我知道,但具体在哪里,在我的设置中。我自然不能在循环中使用它,这会导致很长时间的延迟。我希望它每 200 次延迟一次脚本(所以如果有 1000 条记录,就会有 5 次延迟)
    • 我认为在同时使用 cURL 的情况下,这会让我松一口气吗,因为某些公共 API 会在某个阈值之后限制我的连接。
    • 使用sleep 实际上会停止脚本中的所有内容,不会运行任何代码。
    • 是的,也许我正在使用的其中一个公共 API 有一定的阈值,它表示用户在给定的时间段内只能执行 200 个请求,所以我试图缓解延迟脚本,这反过来又延迟了 cURL 请求到它们的端点。
    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多