Создание сессии при запуске по крону скриптов из админки

Тема в разделе "OpenCart", создана пользователем cherkas, 26 ноя 2016.

  1. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    совсем забыл

    Сделайте в контроллере 2 функции: public function load() - какая она есть и public function load1($cron). Из cron_tasks обращайтесь к load1


    настройки cron_tasks

    время выставите сами
    Код:
    $cron->call(
        "catalog/suppler/load1/",
        array (
            "minute" => "*",
            "hour" => "*",
            "day" => "*",
            "dayofweek" => "*",
            "dayofmonth" => "*"
        ),
        array(
      "cron" => "6"
     )
    );

    где "cron" => "6" - 6 это номер вашего xml файла
     
    ChipZip нравится это.
  2. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    снова здравствуйте уважаемые господа знатоки!

    есть вопрос по теме

    при запуске по крону существует такая проблема (смотрите ссылку)

    http://qaru.site/questions/134717/relative-path-not-working-in-cron-php-script

    точно знаю, что она сущестует при команде /usr/local/bin/php /home/.../.../......../...

    будет ли описанная по ссылке проблема возникать при команде curl или wget?

    к примеру /usr/bin/wget -O /dev/null http://.../.../cron.php

    ведь эти команды поддерживают протокол http(s)

    и по идее такая проблема возникнуть не должна


    не хотелось бы разобравшись и таки реализовав то, что описано выше по теме окажется, что работать, без внесения изменений в сами модули которые хочу запустить из админки, не будет
     
    Последнее редактирование: 8 дек 2018
  3. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    И там же дано решение, которое я всегда использую - chdir()!

    А вообще, при запуске через wget проблем не будет, потому что wget равноценно запуску из браузера.
     
    cherkas нравится это.
  4. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    да, дано, но на сколько я понял chdir() нужно будет вставлять в модули которые будут запускаться, а при запуске через wget вносить изменения в модули не нужно будет.
     
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Вызов chdir() нужен только один раз, в самом начале того файла, который непосредственно запускается через крон.


    В модули их вносить в любом случае не нужно.
    А запуск через wget имеет ряд недостатков. Например, дополнительные траты ресурсов сервера из-за запуска через веб-сервер + дополнительные затраты по времени из-за использования сетевого стека. Ещё есть вероятность упереться в различные лимиты по времени выполнения и памяти, которые действуют при работе из-под веб-сервера. И наконец необходимость делать крон скрипт доступным извне.
     
  6. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    через крон по идее вызывается контроллер. от сюда 2 вопроса, в контроллере вписать в самом начале, сразу после <?php или уже в функции? И самый не понятный вопрос, что таки писать в скобках chdir()?

    как вариант попробую предположить, что нужно прописать полный путь к папке с контроллером

    типа

    chdir('/home/.../domains/.../public_html/admin/controller/extension/module');
     
    Последнее редактирование: 8 дек 2018
  7. chukcha

    chukcha

    Регистрация:
    9 окт 2014
    Сообщения:
    448
    Симпатии:
    119
    1. Определить что запрос (скрипт) работает в режиме cli

    И там установить ..

    можно этого не делать
    а в кроне изменить директорию и запускать скрипт

    Самый правильный путь - посмотреть на гите opencartcli

    https://github.com/iSenseLabs/oc_cli
     
    cherkas нравится это.
  8. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Нет!
    Я не знаю, как именно вы это реализовали, но у меня в таких случаях вызывается модифицированный index.php.
    А вызывать сразу именно контроллер точно не получится, ибо будет тонна ошибок из-за не установленного окружения и ничего работать не будет.

    Путь от корня сервера к директории с файлом, который запускает крон.

    А вообще, посмотрите на вариант от chukcha, думаю, он вам вполне подойдёт.
     
    cherkas нравится это.
  9. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    ну да согласен контроллер то через индекс вызывается всё равно

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

    вроде бы понятно.
     
  10. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Да.