使用CodeIgniter运行cron作业

lf5gs5x2  于 8个月前  发布在  其他
关注(0)|答案(8)|浏览(68)

我需要使用CodeIgniter对文件运行cron作业,但CodeIgniter不允许我直接运行文件。即
我可以在浏览器中运行控制器:

api.example.com/index.php/cron

我的主机只允许我运行PHP文件,我不能通过命令行来运行,因为它不允许我运行wget或curl。
如何让CodeIgniter运行如下文件:

api.example.com/index.php/application/controller/cron.php

我可以用我的主机调用那个文件。
更新
以为我会只是更新没有一个选项为我工作,我最终改变了托管和做以下工作。
http://devsforrest.com/116/setup-a-cronjob-to-run-every-5-minute-on-media-temple

bttbmeg0

bttbmeg01#

不知道这是不是你要找的,或者我回答错了,但是我用CodeIgniter运行CRON作业的方式只是作为cron这样做:

php /path/to/index.php controller function

然后在控制器的顶部有这个

if( PHP_SAPI != 'cli') exit('My Custom Error Message');
vwkv1x7d

vwkv1x7d2#

使用wget命令沿着你的url在codeigniter文件中运行cron,在你的情况下应该是:

wget api.example.com/index.php/controller/function

注意不要使用文件的路径,使用调用你的函数的url。

r55awzrz

r55awzrz3#

在这里,您可以找到分步如何在CodeIgniter 4中设置Cron作业

步骤1

通过Composer安装
打开项目终端并运行此命令。

$ composer require daycry/cronjob

步骤#2

应用程序的包配置

$ php spark cronjob:publish

一次,你会运行它。它会在**/app/Config文件夹中发布一个名为CronJob.php**的文件。
执行迁移命令以运行应用程序的挂起迁移:

$ php spark migrate -all

都搞定了

步骤3

将Cron作业添加到CodeIgniter任务计划程序

<?php

namespace Config;

use CodeIgniter\Config\BaseConfig;
use Daycry\CronJob\Scheduler;

class CronJob extends \Daycry\CronJob\Config\CronJob
{
    //...
  
    //... other code stuff

    /*
    |--------------------------------------------------------------------------
    | Cronjobs
    |--------------------------------------------------------------------------
    |
    | Register any tasks within this method for the application.
    | Called by the TaskRunner.
    |
    | @param Scheduler $schedule
    */
    public function init(Scheduler $schedule)
    {
        $schedule->url(base_url('cron/remove-users'))->named("RemoveUnverfiedUsers")->daily();
    }
}

步骤#4

为任务启用CronJob

$ php spark cronjob:enable

步骤#5

将CronJob Processor添加到Crontab

$ crontab -e

添加您的作业以使其每分钟运行一次。
语法:

* * * * * cd /path-to-your-project && php spark cronjob:run >> /dev/null 2>&1

范例:

* * * * * cd /var/www/html/dev/codeigniter-4 && php spark cronjob:run >> /dev/null 2>&1

**注意:**任务调度器每分钟执行一次,但cron会在指定的时间段(一天一次)运行。

希望,这将有助于您在CI v4中设置cron作业。

u59ebvdq

u59ebvdq4#

class Cron extends CI_Controller {
    function index($dummy) {

        // Crony command

    }
}

行:api.example.com/index.php/cron/index/dummy.php
基本上给出的例子使用第三个uri段来传递一个以.php结尾的值,而你没有使用它。
或者你可以用好的老Routing

bqf10yzr

bqf10yzr5#

使用.htaccess将.php附加到请求的URL,我没有测试下面的代码,但我希望它有帮助。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [R=301]
bbuxkriu

bbuxkriu6#

使用CURL并通过URL调用cronjob。如果CURL在您的主机中启用,这将是一个很好的选择。
在网站的根文件夹中创建一个名为cronjob.php的PHP文件,并在文件中添加以下脚本。

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.mysite.com/index.php/controller/method");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
?>

现在在cronjob中调用php文件cronjob.php,它应该可以工作。

pxyaymoc

pxyaymoc7#

简单

/usr/local/bin/php /home/cpanel_username/public_html/sub_folder/index.php param1 param2 optional_param3 optional_param3

这里
cpanel_username -您的域名的用户名cpanel,
sub_folder(可选)-如果您的Web应用程序是任何文件夹
Param(参数)-指控制器及其方法(函数)

rpppsulh

rpppsulh8#

Codeigniter API Cronjob for godaddy hosting
CodeIgniter cron job API based daily 10点钟

0   10  *   *   *   /usr/local/bin/php public_html/folder_name/index.php controller_name funcation_name

为了我工作得很好

相关问题