2016-01-27 5 views
0

После нескольких попыток я создал задачу хрон, который работает как следующий файл каждую минуту - этот файл называется cron.php:Как создать простой Cron (CodeIgniter)

<?php 
     echo file_get_contents('http://website.com/search/all'); 
    ?> 

поиска является мой контроллер, все это мой функция.

При обращении к файлу через терминал, как это так, файл работает корректно и ожидалось:

php /srv/users/serverpilot/apps/websitename/public/cron.php 

Однако, как только я запланировать внутри кронтаб -e он не работает правильно (если все) и не обнаруживает ошибок. Это содержимое кронтаб -e:

* * * * * php /srv/users/serverpilot/apps/brickmulesite/public/cron.php 

Когда я смотрю через мой журнал хрон (Grep хрон/вар/Журнал/системный журнал) это то, что я вижу:

Jan 27 13:55:01 websitename CRON[22231]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 13:56:01 websitename CRON[22237]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 13:57:01 websitename CRON[22241]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 13:58:01 websitename CRON[22247]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 13:59:01 websitename CRON[22260]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 14:00:01 websitename CRON[22266]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 14:01:01 websitename CRON[22270]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 14:02:01 websitename CRON[22274]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 14:03:02 websitename CRON[22278]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 14:04:01 websitename CRON[22363]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 14:05:01 websitename CRON[22367]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 14:06:01 websitename CRON[22372]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 14:07:01 websitename CRON[22376]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 
Jan 27 14:08:01 websitename CRON[22383]: (root) CMD (php /srv/users/serverpilot/apps/websitename/public/cron.php) 

Кажется, что cron запущен, но не выполняет код в файле. Что мне не хватает?

Я знаю, что я должен быть в состоянии запустить его, используя следующие, но это не сработало, так что я хотел, чтобы упростить вопрос:

php -f /srv/users/serverpilot/apps/websitename/public/index.php search all 
+0

'PHP -f /srv/users/serverpilot/apps/websitename/public/index.php поиск/все 'должен работать, если ваш контроллер' Search.php' находится непосредственно в вашей папке 'controller '. Вы получаете какие-либо ошибки в вашем 'error_log'? Также имейте в виду, что вы можете использовать '127.0.0.1' вместо' localhost' для вашего хоста базы данных. –

+0

Привет @ArkoElsenaar - файл 'Search.php' находится непосредственно в папке' controllers'. Ошибка error_log пуста ... – David

+0

Где вы ожидаете увидеть результат, когда вы запускаете его из cron? –

ответ

1

[SOLVED]

Вы заметите, что я использую ServerPilot как часть моего веб-сайта. Их платформа позволяет мне выбрать, какую версию php использовать для моего веб-приложения. Так или иначе ...

Исправление был обнаружен на этом сайте: https://serverpilot.io/community/articles/how-to-use-the-php-cli.html

Что мне нужно сделать, это изменить PHP вызов внутри хрон так, чтобы он прочитал:

* * * * * php5.6-sp /srv/users/serverpilot/apps/websitename/public/cron.php 

Обратите внимание на php5.6-sp

Я предполагаю, что это очень специфично для пользователей ServerPilot.

0

использовать полный путь

/usr/bin/php 
+0

Привет @recycler - Когда я запускаю команду, следующая команда из CLI работает нормально. Теперь я вижу причину, по которой это не было бы изнутри. 'php/srv/users/serverpilot/apps/websitename/public/cron.php' – David

+0

вы запускаете php из bash. bash имеет переменные environement. cron запускает его на системном уровне и не имеет системных переменных. поэтому путь неизвестен. «php» будет выполняться в корневом каталоге. только bash знает, что он находится в/usr/bin/или/bin/или ... – recycler

Смежные вопросы