Как использовать Cron и Codeigniter / PHP для запроса базы данных MySQL? - PullRequest
0 голосов
/ 03 марта 2012

Меня интересует, как будет выглядеть код (командная строка и php), где каждую минуту или час вы проводите инвентаризацию количества продаж предметов, полученного из базы данных mysql, и выполняете некоторые действия на основе этого.Я использую CodeIgniter для PHP и назову мой контроллер "cronControl".

Вот что у меня есть для части командной строки (включая каталог):

:htdocs TimPeterson$ * * * * * php index.php cronControl countSales

Вотчасть php cronControl:

class CronControl extends CI_Controller {

  function countSales(){
     $count=$this->db->query("SELECT stuff");
     //do->stuff->based on $count;
     $count="i counted 137 items";          
     file_put_contents("mylogfile.txt", $count);
  }
}

Когда я набираю вышеуказанную команду в оболочку, я получаю:

-bash: 404.php: command not found

Похоже, что он оценивает все сценарии php в моем корневом каталоге (гдемоя страница 404.php), а не только контроллер cronControl / countSales.Обратите внимание, что эта команда оболочки работает и печатает $ count в mylogfile.txt, если вы пропустите 5 звездочек.

Есть мысли о том, что происходит?

проблема решена !!!: ключ при вводе команды в файле crontab для включения звездочек, но в оболочке НЕ для включения звездочек

, поэтому в crontab -e:

* * * * * /usr/bin/php /applications/xampp/htdocs/index.php cronControl countSales

тогда как в htdocs $

    /usr/bin/php /applications/xampp/htdocs/index.php cronControl countSales

Ответы [ 3 ]

1 голос
/ 03 марта 2012

CodeIgniter имеет встроенный механизм регистрации для этой цели.

Например:

log_message('debug', 'Cron count is ' . $count);

См. http://codeigniter.com/user_guide/general/errors.html для получения дополнительной информации.

Убедитесь, что ведение журнала включено для отладки (установите в вашем config.php)и эти файлы могут быть записаны в каталог журнала.

1 голос
/ 03 марта 2012

Быстрый способ записи в файл заключается в использовании file_put_contents , например

file_put_contents("/tmp/mylogfile.txt","Counted $count\n", FILE_APPEND );
0 голосов
/ 22 марта 2012

С помощью Дэна эта проблема теперь решена. ключ при вводе команды находится в файле crontab для включения звездочек, но в оболочке НЕ для включения звездочек:

crontab -e: * * * * * /usr/bin/php /applications/xampp/htdocs/index.php cronControl countSales

В то время как в htdocs

$ /usr/bin/php /applications/xampp/htdocs/index.php cronControl countSales
...