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

标签 php codeigniter cron cpanel

您好,我正在尝试使用 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 作业,我将不胜感激。谢谢

股票更新.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/local/bin/php 而不是 php 让 codeigniter 获取 URI 段。

如果可行,试试这个

/usr/local/bin/php/home/name/public_html/index.php 库存更新索引

关于php - 如何在服务器上为 codeigniter 脚本设置 cron 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32180480/

相关文章:

php - 如何比较 2 个用户在单选按钮上的输入

php - 当字符串包含 & 符号时,在值末尾添加额外的分号

redis - 存储数据并同时订购列表的最佳方式

php - 如何在 Cpanel 中使用 Cron 处理发送电子邮件限制?

php - 调用 php exec() 时未加载共享库

php - PHP 中的常量与属性?

Codeigniter:加入 'where in' 子句

iphone - IOS - 如何检查 SBJson 创建的 JSON NSData?

linux - 如何使用 gksu gnome-schedule 设置工作目录

php - 如何获取 while 循环内的文本框值?