Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
共享主机上的CodeIgniter Cron作业?_Codeigniter_Cron_Crontab_Shared Hosting_Cpanel - Fatal编程技术网

共享主机上的CodeIgniter Cron作业?

共享主机上的CodeIgniter Cron作业?,codeigniter,cron,crontab,shared-hosting,cpanel,Codeigniter,Cron,Crontab,Shared Hosting,Cpanel,我正在尝试学习如何使用CodeIgniter完成我的第一个cron工作。在过去,使用CI执行此操作的唯一方法似乎是使用wget命令,而不是php 但是,表示现在可以从命令行执行此操作,例如通过运行: $ cd /path/to/project; $ php index.php controller method 在我的本地设置中使用终端非常有效。但是,当我在共享主机上的cPanel的cron部分使用类似命令时,该任务只返回index.php的内容 我不完全确定cPanel对这个命令做了什么,所

我正在尝试学习如何使用CodeIgniter完成我的第一个cron工作。在过去,使用CI执行此操作的唯一方法似乎是使用
wget
命令,而不是
php

但是,表示现在可以从命令行执行此操作,例如通过运行:

$ cd /path/to/project;
$ php index.php controller method
在我的本地设置中使用终端非常有效。但是,当我在共享主机上的cPanel的cron部分使用类似命令时,该任务只返回
index.php
的内容

我不完全确定cPanel对这个命令做了什么,所以不确定它是否在使用命令行

有人能解释一下我如何使用CodeIgniter在共享主机上设置cron作业吗?

以下是CodeIgniter用户指南中的示例代码:

tools.php }
?>

这将取决于您的主机。如果你不小心的话,Cron作业可能会把事情搞砸,所以很多共享主机都不允许这样做。您可能需要使用一些虚拟容器(如VPS、virtuozo等)来完成此操作。这不是CodeIgniter的问题,而是托管提供商的问题。首先给他们打电话。

我们解决了这个问题,具体如下:

  • 设置一个由cron调度的普通php文件。与codeigniter无关
  • 在它里面,您可以发出fsocket或curl请求来执行常规的CodeIgniter调用,就像您在web上所做的那样
  • 下面是一个示例(比如cron.php)

    这样,当fsocket连接关闭时,脚本仍将运行到最后


    由于各种原因,我们实际上有一堆这样的FSocket。如果需要确保对该控制器/方法的调用来自cron脚本,则需要传递一些额外的散列值,以便只有cron和脚本知道它。一旦调用脚本,它就可以访问任何codeigniter函数。工作起来很有魅力。

    我已经在共享主机上设置了100个CI cronjob,如下所示:创建一个短php脚本,调用CI控制器,就像调用webbrowser一样

    因此,script.php包含以下内容:

          script #! /usr/local/bin/php -f /home/example/public_html/script.php 
    
      <?php
         get_get_contents('http:example.com/cronjob/');     
      ?>
    
    script#/usr/local/bin/php-f/home/example/public_html/script.php
    
    然后在cPanel中将cronjob设置为调用script.php
    当它运行Script.php时,将调用Codeigniter Cronjob控制器。在这里,您可以使用整个CI框架。

    如果您想将其称为web浏览器,为什么不替换cronjob呢 命令与:

    wget http://example.com/cronjob/
    
    而不是创造新的或简单的东西

    curl --suppress http://example.com/cronjob/`
    

    你的控制器方法是做什么的?好吧,现在我只是在尝试CodeIgniter用户指南中的Hello World示例。为什么,这会对答案产生怎样的影响?虽然我相信你是对的,但我能够使用普通的PHP运行cron作业,并将文件放入CodeIgniter根目录中。但我觉得使用CodeIgniter比单独使用PHP舒服得多。在cron定义中,是否使用php二进制文件的完整路径?另外,请确保您没有引用$\u服务器或任何未在CLI中定义的全局变量。我要检查的最后一件事是gzip是否把你的输出搞砸了。我肯定还有很多,但这些是我第一次想到的。。。
          script #! /usr/local/bin/php -f /home/example/public_html/script.php 
    
      <?php
         get_get_contents('http:example.com/cronjob/');     
      ?>
    
    wget http://example.com/cronjob/
    
    curl --suppress http://example.com/cronjob/`