[英]How to set cron job url in codeigniter on HostGator cpanel
[英]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
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 的路由。
/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 方法可能需要的命令行路由的第三个可选部分。
<?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.