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
Php 如何在服务器上为codeigniter脚本设置cron作业_Php_Codeigniter_Crontab_Cpanel - Fatal编程技术网

Php 如何在服务器上为codeigniter脚本设置cron作业

Php 如何在服务器上为codeigniter脚本设置cron作业,php,codeigniter,crontab,cpanel,Php,Codeigniter,Crontab,Cpanel,嗨,我正在尝试使用cpanel为服务器上的脚本设置cron作业,但是我从来没有这样做过,如果有人能指导我,这将非常有帮助 脚本路径:/home/name/public\u html/application/modules/stockupdate/controllers/stockupdate.php <?php class StockUpdate extends Backend_Controller { public function __construct() {

嗨,我正在尝试使用cpanel为服务器上的脚本设置cron作业,但是我从来没有这样做过,如果有人能指导我,这将非常有帮助

脚本路径:/home/name/public\u html/application/modules/stockupdate/controllers/stockupdate.php

<?php
class StockUpdate extends Backend_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('ftp');
        $this->load->library('csvimport');
        $this->load->model('stock_update_model');
        ini_set('memory_limit', '3000M');
        set_time_limit(0); 
    }

    function index()
    {
        if ($this->input->is_cli_request())
        {
            $this->stock_update_model->truncate_stock();
            $this->update_stock();
        }
    }

    public function update_stock()
    {
        $ftpServer = "server";
        $ftpUser = "username";
        $ftpPassword = "password";

        $ftp_server = $ftpServer;
        $ftp_conn = ftp_connect($ftp_server);
        $ftp_login = ftp_login($ftp_conn, $ftpUser, $ftpPassword ); 

        if(!$ftp_conn) 
            die("A connection to $ftpServer couldn't be established"); 
        else if(!$ftp_login) 
            die("Your login credentials were rejected"); 
        else
        {
            $stock_file = "/home/name/files/uploads/stock.CSV";

            $server_file = "/stock.CSV"; 

            if (ftp_get($ftp_conn, $stock_file, $server_file, FTP_BINARY)) 
            {
                if (($handle = fopen($stock_file, "r")) !== FALSE) 
                {
                    while (($data = fgetcsv($handle)) !== FALSE) 
                    {
                        $product_code = $data[0];
                                $stock = $data[1];


                                $this->stock_update_model->update_stock($product_code, $stock); 
                                }
                                else
                                {
                                    continue;
                                }
                    }
                    fclose($handle);
                    unlink($stock_file);
                }
                else
                {
                    echo "Error reading stock file.\n";
                }
            }
            else 
            {
                echo "There was a problem\n";
            }
        }
    }
我需要每小时运行此脚本,我已经阅读了教程,并尝试使用以下命令:

1) php /home/name/public_html/index.php stockupdate 
2)/home/name/public_html/application/modules/stockupdate/controllers/stockupdate.php
第一个发送以下错误:

<h4>A PHP Error was encountered</h4>

<p>Severity: Notice</p>
<p>Message:  Undefined index: REMOTE_ADDR</p>
<p>Filename: core/Input.php</p>
<p>Line Number: 351</p>

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  Cannot modify header information - headers already sent by (output started at /home/name/public_html/system/core/Exceptions.php:185)</p>
<p>Filename: libraries/Session.php</p>
<p>Line Number: 689</p>

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  Cannot modify header information - headers already sent by (output started at /home/name/public_html/system/core/Exceptions.php:185)</p>
<p>Filename: helpers/url_helper.php</p>
<p>Line Number: 542</p>
遇到PHP错误 严重性:通知

消息:未定义索引:远程地址

文件名:core/Input.php

电话号码:351

遇到一个PHP错误 严重性:警告

消息:无法修改标题信息-标题已由发送(输出从/home/name/public_html/system/core/Exceptions.php:185开始)

文件名:libraries/Session.php

电话号码:689

遇到一个PHP错误 严重性:警告

消息:无法修改标题信息-标题已由发送(输出从/home/name/public_html/system/core/Exceptions.php:185开始)

文件名:helpers/url\u helper.php

电话号码:542

第二个命令send me error拒绝访问。如果有人能指导我创建cron作业,我将不胜感激。多谢各位

stockupdate.php

<?php
class StockUpdate extends Backend_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library('ftp');
        $this->load->library('csvimport');
        $this->load->model('stock_update_model');
        ini_set('memory_limit', '3000M');
        set_time_limit(0); 
    }

    function index()
    {
        if ($this->input->is_cli_request())
        {
            $this->stock_update_model->truncate_stock();
            $this->update_stock();
        }
    }

    public function update_stock()
    {
        $ftpServer = "server";
        $ftpUser = "username";
        $ftpPassword = "password";

        $ftp_server = $ftpServer;
        $ftp_conn = ftp_connect($ftp_server);
        $ftp_login = ftp_login($ftp_conn, $ftpUser, $ftpPassword ); 

        if(!$ftp_conn) 
            die("A connection to $ftpServer couldn't be established"); 
        else if(!$ftp_login) 
            die("Your login credentials were rejected"); 
        else
        {
            $stock_file = "/home/name/files/uploads/stock.CSV";

            $server_file = "/stock.CSV"; 

            if (ftp_get($ftp_conn, $stock_file, $server_file, FTP_BINARY)) 
            {
                if (($handle = fopen($stock_file, "r")) !== FALSE) 
                {
                    while (($data = fgetcsv($handle)) !== FALSE) 
                    {
                        $product_code = $data[0];
                                $stock = $data[1];


                                $this->stock_update_model->update_stock($product_code, $stock); 
                                }
                                else
                                {
                                    continue;
                                }
                    }
                    fclose($handle);
                    unlink($stock_file);
                }
                else
                {
                    echo "Error reading stock file.\n";
                }
            }
            else 
            {
                echo "There was a problem\n";
            }
        }
    }
试试这个,它很管用

php /full-path-to-cron-file/cron.php /test/index
Reference[

您可以在配置文件中放入
ob_start()
,以删除最后两个错误。

如下所述:您应该获取控制器类名和方法名,并使用它们构建CLI命令,如下所示:

php <path to your CI index.php> <name of the controller class> <name of the function> <optional arguments>

使用
/usr/local/bin/php
而不是
php
让codeigniter获取URI段

所以,试试这个,如果它有效的话

/usr/local/bin/php/home/name/public\u html/index.php股票更新索引

wget -t=1 https:// codeginter.com/controller/method
为尝试次数设置
t

我使用了这个选项

/usr/bin/curl http://example.com/controller/method

您应该向我们展示您的控制器文件
stockupdate.php
谢谢您的回复给我一分钟,我会添加进去。尝试通过应用程序url设置cron作业。例如“cron作业不工作bcz CI需要执行的系统文件和系统文件路径是相对定义的。因此,请通过完整url进行尝试。试试这个his将帮助您。