首页 文章

使用CodeIgniter运行cron作业

提问于
浏览
3

我需要使用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

6 回答

  • 2

    使用wget命令和你的url在你的caseigniter文件中运行cron它应该是:

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

    并且小心不要使用文件路径使用调用你的函数的url .

  • 1

    不确定这是否是您正在寻找的,或者如果我回答错了,但我使用CodeIgniter运行CRON作业的方式就是将其作为cron:

    php /path/to/index.php controller function
    

    然后在控制器中我将它放在它的顶部

    if( PHP_SAPI != 'cli') exit('My Custom Error Message');
    
  • 0
    class Cron extends CI_Controller {
        function index($dummy) {
    
            // Crony command
    
        }
    }
    

    行: api.example.com/index.php/cron/index/dummy.php

    基本给出的示例使用第3个uri段传递一个不使用的 .php 结尾的值 .

    或者你可以使用好的'Routing

  • 0

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

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

    使用CURL并通过URL调用您的cronjob . 如果您的托管中启用了CURL,那将是一个不错的选择 .

    在您网站的根文件夹中创建一个PHP文件名cronjob.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,它应该工作 .

  • 0

    只是

    /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(参数) - 指控制器及其方法(函数)

相关问题