Запуск консольного скрипта в контексте Joomla

Тема в разделе "Программирование", создана пользователем Stas77, 04.08.2012.

  1. Offline

    Stas77 Недавно здесь

    Регистрация:
    04.08.2012
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Добрый день!

    Стоит задача:
    - В Cron'e с периодичностью 1 минута запускается "легкий" скрпит - "controller.php"
    - "controller.php" проверяет, вычисляет и по необходимости стартует в фоновом режиме другие скрипты.

    (my_script1...my_scriptN)
    - эти скрипты должны запускаться в контексте Joomla, на базе фреймворка Jquery, быть связанными с порталом, который

    работает на базе ядра Joomla.

    Попытка решения задачи:
    - В корне сайта создан файл j-connect.php:
    //-------------------------
    скобка-меньше-больше-вопрос-пхп
    define( '_JEXEC', 1 );
    define('JPATH_BASE', dirname(__FILE__));
    define( 'DS', DIRECTORY_SEPARATOR );
    require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
    require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
    $mainframe =& JFactory::getApplication('site');
    вопрос-скобка
    //-------------------------

    - В файле "my_script1" прописана шапка:
    require_once "/var/www/XXXXX/data/www/XXXXXXXXX.ru".'/j-connect.php';

    Проблема:

    При запуске "my_script1.php" через браузер - все идеально отрабатывает
    При запуске "my_script1.php" через консоль - скрипт падает после инструкции "$mainframe =&

    JFactory::getApplication('site')"

    Пример вызова скрипта из "controller.php":
    exec("/usr/bin/php5 ".dirname(__FILE__)."/my_script1.php ".$my_ImportList[$i]." >/dev/null 2>&1 &");

    ошибка:
    PHP Fatal error: Class 'JRequest' not found in

    /var/www/NameMy/data/www/SiteMy.ru/libraries/joomla/session/session.php on line 453


    Если кто знает решение проблемы - подскажите, пожалуйста.
    Если кто делал что нибудь подобное, скажите, это вообще реально (запустить фоновый консольный скрипт в контексте

    Joomla)?

    P.S. Joomla! 1.7.3 Stable [ Ember ] 14-Nov-2011 14:00 GMT
     
  2.  
  3. volod3000
    Offline

    volod3000 Недавно здесь

    Регистрация:
    03.06.2009
    Сообщения:
    74
    Симпатии:
    8
    Пол:
    Мужской
  4. progmist
    Offline

    progmist Недавно здесь

    Регистрация:
    18.05.2009
    Сообщения:
    155
    Симпатии:
    10
    Пол:
    Мужской
    Ковырнул... Проблема в том что JRequest грузится по условию, в файле libraries/import.php
    на строке 58
    if (isset($_SERVER['HTTP_HOST'])) {
    JLoader::import('joomla.environment.request');

    следовательно вам нужно в вашем скрипте в самом начале, написать $_SERVER['HTTP_HOST'] = "Any server or I'am from command line"; // лучше конечно http://ваш-сервер/

    так как код выполняется не на веб-сервере, навивается мысль что могут быть и другие глюки с этим связаные.

    курите Joomla лучше.
    Собственно смысл в том что Joomla надо дать понять, что она выполняется на web-сервере а не в скрипте
     
    Последнее редактирование: 20.10.2012

Поделиться этой страницей

Загрузка...