簡體   English   中英

如何在服務器上為Codeigniter腳本設置Cron作業

[英]How to setup cron job for a codeigniter script on server

嗨,我正在嘗試使用cpanel在服務器上為腳本設置cron作業,但是我從未這樣做過,如果有人可以指導我,那將真的有幫助。

腳本路徑:/home/name/public_html/application/modules/stockupdate/controllers/stockupdate.php

我已經閱讀了教程,並且需要嘗試使用以下命令,每個小時都要運行一次此腳本:

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>

第二個命令向我發送錯誤消息,拒絕訪問。 如果有人可以指導我創建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";
            }
        }
    }

我用這個表揚

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

使用/usr/local/bin/php而不是php來獲取codeigniter來提取URI段。

所以嘗試一下

/usr/local/bin/php /home/name/public_html/index.php stockupdate index

您可以將ob_start()放入配置文件中,以刪除最后兩個錯誤。

試試這個工作。

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

參考[ http://www.asim.pk/2009/05/14/creating-and-installing-crontabs-using-codeigniter/]

如此處所述: https : //ellislab.com/codeigniter/user-guide/general/cli.html,您應該獲取控制器類名稱和方法名稱,並使用它們來構建CLI命令,如下所示:

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

所以對於您的代碼:

php /home/name/public_html/index.php stockupdate stock_update
wget -t=1 https:// codeginter.com/controller/method

t設置為嘗試次數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM