Автор Тема: Как прописать контроллер в кроне?  (Прочитано 1033 раз)

11 Сентябрь 2014, 10:43:44
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите пожалуйста.
Создал свой контроллер в /controllers/front/MyPagesController.php
class MyPagesControllerCore extends FrontController
{
.............
}
При запуске по url: http://www.shop.com/index.php?controller=mypages, всё работает.
Теперь хочу прописать его в кроне, чтобы выполнялся каждый час.
* */2 * * * /usr/bin/php /www/shop.com/htdocs/controllers/front/MyPagesController.php
Однако, при запуске отображается такая ошибка:
PHP Fatal error:  Class 'FrontController' not found in /controllers/front/MyPagesController.php
Добавляю
include("/www/shop.com/htdocs/classes/controller/FrontController.php");Появляется ошибка:
PHP Fatal error:  Class 'Controller' not found
Подскажите как быть в подобных случаях?
11 Сентябрь 2014, 10:46:35
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Все обращения к сайту идут через index.php, поэтому и ошибка.
11 Сентябрь 2014, 10:49:47
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Есть ли решение у данной проблемы?
Может попробывать в cron-e прописать url?
Или как то по другому?
11 Сентябрь 2014, 10:51:57
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Для крон задач создайте отдельный файл mymodulecron.php
include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/../../init.php');
/* Check to security tocken */
if (substr(Tools::encrypt('mymodule/cron'), 0, 10) != Tools::getValue('token') || !Module::isInstalled('mymodule'))
die('Bad token');

include(dirname(__FILE__).'/mymodule.php');
$myvar = new MyModuleClass();
....
Cоздание интернет сайтов Webstudio UwK
27 Ноябрь 2018, 09:30:52
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для крон задач создайте отдельный файл mymodulecron.php
include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/../../init.php');
/* Check to security tocken */
if (substr(Tools::encrypt('mymodule/cron'), 0, 10) != Tools::getValue('token') || !Module::isInstalled('mymodule'))
die('Bad token');

include(dirname(__FILE__).'/mymodule.php');
$myvar = new MyModuleClass();
....

Этот вариант не работает.

Получаю
PHP Fatal error:  Class 'Context' not found in /app/init.php on line 27
27 Ноябрь 2018, 12:17:36
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Цитировать
PHP Fatal error:  Class 'Context' not found in /app/init.php on line 27
версия prestashop какая?
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
27 Ноябрь 2018, 16:45:09
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
PHP Fatal error:  Class 'Context' not found in /app/init.php on line 27
версия prestashop какая?

Prestashop 1.6

init.php выглядит вот так
<?php
if (isset(Context::getContext()->controller)) {
    
$controller Context::getContext()->controller;
} else {
    
$controller = new FrontController();
    
$controller->init();
}
27 Ноябрь 2018, 16:57:02
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
include(dirname(__FILE__).'/../../config/config.inc.php');у меня во многих модулях только одна такая сторочка, модули рабочие, ошибок нет