【问题标题】:Running a cron job with CodeIgniter使用 CodeIgniter 运行 cron 作业
【发布时间】:2012-07-12 19:58:43
【问题描述】:

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

【问题讨论】:

    标签: codeigniter


    【解决方案1】:

    不确定这是否是您要查找的内容,或者我的回答是否错误,但我使用 CodeIgniter 运行 CRON 作业的方式只是作为 cron 执行此操作:

    php /path/to/index.php controller function
    

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

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

    【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我在 godaddy 托管,但这个 wget 不工作。我尝试了多种方法,但没有成功!
    【解决方案3】:
    class Cron extends CI_Controller {
        function index($dummy) {
    
            // Crony command
    
        }
    }
    

    线路:api.example.com/index.php/cron/index/dummy.php

    基本上给出的示例使用第三个 uri 段传递一个以 .php 结尾的值,您不使用该值。

    否则你可以使用好的 ol' Routing

    【讨论】:

    • 这行不通,请看图片附件s3-eu-west-1.amazonaws.com/isdcloud/backups/…
    • 所以基本上它会在您的 ftp 中获取所有 php 文件的列表?他们的解决方案多么复杂和有限。
    • 我知道我的主机太垃圾了
    • 我只需创建一个简单的 php 文件,然后在您实际要执行的地址上执行 file_get_contents() 或 cURL。
    【解决方案4】:

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

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

    【讨论】:

    【解决方案5】:

    使用 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 它应该可以工作了。

    【讨论】:

    • 嗨 nish 仍然无法让它工作,看看我的 cronjobs 在我的图像中是如何工作的s3-eu-west-1.amazonaws.com/isdcloud/backups/…
    • 是的,这是可能的。我已经编辑了答案以更详细地解释它。请再次检查。
    • 无法正常工作,因为我需要它来运行 .php 文件而不是 index.php
    • 是的,我理解这个问题。您是否使用上述代码在根文件夹中创建了一个名为 cronjob.php 的文件?如果是这样,您可以运行 cronjob.php 文件,它将使用该文件中提到的控制器和方法调用 index.php。不是吗?
    • 嗨,如果我尝试运行它api.example.com/cron.php 我得到内部服务器错误
    【解决方案6】:

    简单

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

    【讨论】:

      【解决方案7】:

      用于 Godaddy 托管的 Codeigniter API Cronjob

      每天 10 点基于 CodeIgniter cron 作业 API

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

      对我来说工作正常

      【讨论】:

        猜你喜欢
        • 2017-06-25
        • 1970-01-01
        • 2013-03-23
        • 2015-08-31
        • 2013-03-05
        • 2020-01-22
        • 2015-02-10
        • 2011-01-15
        • 1970-01-01
        相关资源
        最近更新 更多