2015-08-24 3 views
2

Привет, я пытаюсь настроить задание cron для скрипта на сервере с помощью cpanel, но я никогда не делал этого, и это действительно помогло бы, если бы кто-нибудь мог мне помочь.Как настроить задание cron для скрипта codeigniter на сервере

Путь

Сценарий: /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"; 
      } 
     } 
    } 
+1

Вы должны показать нам свой файл контроллер 'stockupdate.php' –

+0

Спасибо за ваш ответ, дайте мне минуту, и я добавлю, что в. – user4676307

+0

Попробуйте установить хроны по URL приложения. например, «http: // localhost/app_name/имя_контроля/имя_функции» –

ответ

1

Используйте /usr/local/bin/php вместо php, чтобы получить кодинигр для получения сегментов URI.

так попробовать это, если он работает

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

0

Попробуйте это работа.

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

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

+0

Благодарим за ответ, но URL-адрес выглядит некорректно. – user4676307

+0

Попробуйте это http://www.asim.pk/2009/05/14/creating-and-installing-crontabs-using-codeigniter/, это поможет вам. –

+0

Если это поможет принять ответ. –

1

Вы можете поместить ob_start() в файл конфигурации, чтобы удалить последние две ошибки.

0

Как указано здесь: https://ellislab.com/codeigniter/user-guide/general/cli.html вы должны получить имя класса контроллера и имя метода и использовать их для создания команды консоли, как это:

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 
0
wget -t=1 https:// codeginter.com/controller/method 

t Набор для числа попыток.

2

Я использовал этот воздает

/usr/bin/curl http://example.com/controller/method 
Смежные вопросы