繁体   English   中英

如果在 cpanel 中使用 codeigniter,如何设置 cron 作业?

[英]how to set cron job if using codeigniter in cpanel?

我有一个名为 Buy 的 controller,它有一个 live 方法。 如果使用 codeigniter,如何安装 cronjob? 我使用 codeigniter 4,我使用 cpanel。

php - q /home/kuslon/kuslon/app/Controllers/Services/Buy.php

脚步

  1. app/Config/Routes.php中创建一个命令行路由。 IE:
$routes->setDefaultNamespace('App\Controllers');
$routes->setAutoRoute(false);
// ...

$routes->cli("cli/ship-product/(:segment)", "Services\Buy::ship/$1");

// ...

在哪里:

cli/ship-product/(:segment) - 代表您的路线。 (:segment)可选的,具体取决于您的 Controller 方法是否需要参数。

Buy - 代表您的 Controller。

ship - 代表你的 Controller 方法。

$1 - 表示可选的(:segment)被转发到第一个 Controller 方法的参数,如果它需要的话。 如果您的 Controller 方法不需要任何 arguments,您可以省略它。

注意在->cli(...)的帮助下使用仅限 CLI 的路由

  1. 运行你的 cron 作业。
/usr/local/bin/php -q /home/kuslon/kuslon/public/index.php cli ship-product "ed053cb1-29a4-42f2-a17e-3109fa4d80fe"

在哪里:

-q - 代表 安静模式 抑制 HTTP header output。

/home/kuslon/kuslon/public/index.php - 表示项目的index.php文件的绝对路径。 这假定路径中的第一个kuslon代表您的Cpanel 用户名,第二个kuslon代表您的项目根文件夹。

cli - 代表您之前定义的命令行路由的第一部分。

ship-product - 代表命令行路由的第二部分。

"ed053cb1-29a4-42f2-a17e-3109fa4d80fe" - 表示您的 Controller 方法可能需要的命令行路由的第三个可选部分。

  1. 样本 Controller。
<?php

namespace App\Controllers\Services;

use App\Controllers\BaseController;

class Buy extends BaseController
{

    public function ship(string $uuid)
    {
//        echo  "{$uuid}";
    }

}

资源:通过命令行运行

附录:

如果您的所有路由都通过身份验证过滤器,您可能希望在app/Config/Filters.php排除这些基于命令行的路由。 即:您可能会在下面注意到,我已经从authfilter排除了所有以cli/*开头的路由。

<?php

namespace Config;

use App\Filters\AuthenticationFilter;
use CodeIgniter\Config\BaseConfig;

class Filters extends BaseConfig
{
    // ...
    public $aliases = [
        //...
        'authfilter' => AuthenticationFilter::class
    ];

    public $globals = [
        'before' => [
            //...
            'authfilter' => [
                'except' => ['cli/*']
            ]
        ],
        // ...
    ];
}

您必须做的主要事情是使用此is_cli() function 检查请求是否来自命令行而不是来自 controller 中的浏览器。然后您可以在 Cpanel 中设置 cron 作业。

祝你好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM