【问题标题】:Single PHP script with multiple CRON jobs > optimize into > Single CRON?具有多个 CRON 作业的单个 PHP 脚本 > 优化为 > 单个 CRON?
【发布时间】:2021-10-19 15:14:25
【问题描述】:

我有一个为多个客户端运行的脚本。

相同的脚本,我只是使用不同的 GET 变量来加载客户端凭据。

例如。

example.com/script.php?client=lego
example.com/script.php?client=nike
example.com/script.php?client=stackoverflow

我设置了多个 cron 以在午夜运行脚本,每个 cron 都有不同的客户端 GET 变量。

运行单个 CRON 但处理所有客户端的最佳方法是什么?所以我不需要每次都为每个客户端设置一个 CRON。

【问题讨论】:

    标签: php cron


    【解决方案1】:

    可能有多种解决方案,但我不知道代码是什么。

    删除所有 crons 并只设置一个。

    example.com/script.php

    script.php 内部,将您之前在函数中的所有内容包装起来,创建一个客户端数组并通过传递username 为每个客户端调用该函数。例如

    <?php
    
    // if you have lots of clients and script can exhaust time limit 
    ini_set('max_execution_time', 0);
    
    $clients = ['lego', 'nike', 'stackoverflow'];
    foreach ($clients as $client) {
        myScript($client);
    }
    
    function myScript($client)
    {
        // Whatever you had in script.php earlier replacing $_GET['client'] with $client.
    }
    

    希望它能回答你的问题。

    【讨论】:

    • 感谢@Muhammad 非常感谢!肯定想到了这一点,但这是处理多个客户的最佳方式吗? - 例如,100 个客户端,这可以扩展吗,你肯定不想运行那个脚本那么久吗?如果您明白我的意思,只是想了解一个可扩展的解决方案?
    • @andrewvink 我认为这符合您的目的。您可以创建一个类来更好地组织此代码,但最终使用单个 cron,核心概念将保持不变。我真的不知道你的脚本做了什么,但即使它处理太多,这样做也不应该有什么坏处。
    • 谢谢!好的,很好-可以试一试!该脚本每天代表每个客户端进行一些 API 查询。只是想知道队列是否不是更好的方法以及如何最好地去做?
    • 如果你想使用一个 cron 来做到这一点。我认为队列是唯一的方法。实施可能会有所不同。
    猜你喜欢
    • 2011-11-07
    • 2016-02-04
    • 2013-03-27
    • 2021-05-12
    • 2016-10-06
    • 1970-01-01
    • 2021-12-29
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多