Задать вопрос

Как реализовать передачу данных между PHP сценариями SugarCRM?

Уже два дня бьюсь с такой проблемой, есть cron job в SugarCRM, он каждый период времени выполняет некую логику и заполняет массив.
Из другого сценария в расширении модуля "Accounts" - я хочу получать этот массив. Вот тестовый пример:
код работы (/var/www/sugarcrm/custom/Extension/modules/Schedulers/Ext/ScheduledTasks/acc_activities.php):
<?php    
require_once('custom/registry.php');

array_push($job_strings, 'acc_activities');

function acc_activities() {
  $color['1'] = 'green';
  $GLOBALS['log']->debug('color:' . $color['1']);
  Registry::set('color', $color);
  return true;
}

Код кастомизации модуля, там где происходит дебаг.(/var/www/sugarcrm/custom/modules/Accounts/views/view.list.php):
require_once('include/MVC/View/views/view.list.php');
require_once('custom/registry.php');

class AccountsViewList extends ViewList
{
 	public function preDisplay()
 	{ 
    $color = Registry::get('color');
    var_dump($color);
 		parent::preDisplay();
 		$this->lv->targetList = true;
 	}
}

И собственно код Registory(/var/www/sugarcrm/custom/registry.php)
<?php
/**
 * Статический класс registry
 */
class Registry 
{
    /**
     * Статическое хранилище для данных
     */
    protected static $store = array();
 
    /**
     * Защита от создания экземпляров статического класса
     */
    protected function __construct() {}
    protected function __clone() {}
 
    /**
     * Проверяет существуют ли данные по ключу
     *
     * @param string $name
     * @return bool
     */
    public static function exists($name) 
    {
      return isset(self::$store[$name]);
    }
 
    /**
     * Возвращает данные по ключу или null, если не данных нет
     *
     * @param string $name
     * @return unknown
     */
    public static function get($name) 
    {
        return (isset(self::$store[$name])) ? self::$store[$name] : null;
    }
 
    /**
     * Сохраняет данные по ключу в статическом хранилище
     *
     * @param string $name
     * @param unknown $obj
     * @return unknown
     */
    public static function set($name, $obj) 
    {
        return self::$store[$name] = $obj;
    }
}
?>

Так вот в представлении var_dump всегда возвращает NULL...
  • Вопрос задан
  • 2440 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
а вы расчитывали что статические переменные могут жить больше чем процесс, в котором они были объявлены? У вас две разные переменные, вы пишите в одну, а читаете из другой. Процессы никак не пересекаются, данными напрямую у них нету возможности меняться.

Используйте какое промежуточное хранишище, типа APC/APCu, или redis или записывайте в файл.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@erop
SugarCRM/SuiteCRM, MS BI stack
vilix, Вы вообще какую задачу решить хотите? Можете ее сформулировать в контексте SugarCRM?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы