0.00
Рейтинг
0.00
Сила

Олег

Вопрос про правильное использование interface и implements?

Есть несколько классов (по классу на источник), содержащих однотипные функции, например парсинг:
Количество и название классов изначально не известно.

Подсказали копать в сторону общий интерфейс и работа с источниками полиморфно.
В итоге получился код ниже.

Как правильно их организовать в плагинах? С подключением в виде одного файла на класс?


Читать дальше →

Утекает память при использовании ORM

Перевел более менее стандартные запросы на ORM, при этом наблюдаю утечку памяти, которая при уже 200 запросов в цикле превращается в проблему, каждый запрос дополнительные 1,2Мб Переменные за собой чищу, кеширование не использую.

Код вызова и код процедуры ниже:

memoryUsage(memory_get_usage(), $base_memory_usage);
$aViewerChannelGrid = $this->oEngine->PluginTvh4_Programs_ViewerProgramsGrid($oChannel->getId(), $next_date, (7 * 24 * 60 * 60) - 1);
memoryUsage(memory_get_usage(), $base_memory_usage);


    public function ViewerProgramsGrid($sNumKanal, $sDataStart, $sDateInterval, $sTimeZone = 3, $sLimit = 0)
    {
        $aFilter = array();

        $aFilter['#where'] = array(
            'channel_id = ?d and date_time BETWEEN ? and  DATE_ADD(?, interval ?d SECOND)'
            => array($sNumKanal, $sDataStart, $sDataStart, $sDateInterval));
        $aFilter['#cache'] = '';
        $aFilter['#order']['date_time'] = 'asc';

        if ($sLimit > 0) {
            $aFilter['#limit'] = $sLimit;
        }
        return ($this->PluginTvh4_ModulePrograms_GetItemsByFilter($aFilter));
    }


Выгружаю канал: 1 Смещение: 3
Bytes diff: 2090496
Bytes diff: 3104832
Выгружаю канал: 2 Смещение: 3
Bytes diff: 5362608
Bytes diff: 6391984
0% выполнения 
Выгружаю канал: 3 Смещение: 3
Bytes diff: 8151328
Bytes diff: 9130480
Выгружаю канал: 4 Смещение: 3
Bytes diff: 11167112
Bytes diff: 12199200
Выгружаю канал: 5 Смещение: 3
Bytes diff: 13787744
Bytes diff: 14859248
Выгружаю канал: 101 Смещение: 3
Bytes diff: 17022656
Bytes diff: 18310896
Выгружаю канал: 102 Смещение: 3
Bytes diff: 21423712
Bytes diff: 22202112

Перевести запрос на ORM

Коллеги,
помогите перевести запрос на ORM.
Есть несколько таблиц справочников: tvh4_Name, tvh4_Genre, tvh4_Persons
Есть таблица связей Film, с полями: Film_ID, Type_record_ID,Object_ID.
Где:
Film_ID — номер фильма
Type_record_ID — справочник
Object_ID — объект справочника
Создано EntityORM для 3 справочников.

Не понимаю как реализовать логику для Film, в частности запрос вида:
$sql = "SELECT
Film.ID, Film.Film_ID, Film.Type_record_ID, Film.Object_ID, Name.Language_ID AS Name_Language_ID, 
		Name.Name_Text, Genre.Language_ID AS Genre_Language_ID, Genre_Text, 
		Persons.Language_ID AS Persons_Language_ID, Persons.Persons_Name
		FROM
		" . Config::Get('db.table.Film') . "
		AS Film
			LEFT JOIN tvh4.tvh4_Name Name ON ( Film.`Object_ID` = Name.ID AND Film.Type_record_ID =1 )
			LEFT JOIN tvh4.tvh4_Genre Genre ON ( Film.`Object_ID` = Genre.ID AND Film.Type_record_ID =2 )
			LEFT JOIN tvh4.tvh4_Persons Persons ON ( Film.`Object_ID` = Persons.ID
				AND ( Film.Type_record_ID =3 OR Film.Type_record_ID =4 OR Film.Type_record_ID =7 OR Film.Type_record_ID =8
				OR Film.Type_record_ID =9 OR Film.Type_record_ID =10 OR Film.Type_record_ID =11 OR Film.Type_record_ID =12
				OR Film.Type_record_ID =13 OR Film.Type_record_ID =14 OR Film.Type_record_ID =15)) 
		WHERE
		    Film.Film_ID IN (?a)
		ORDER BY Film.ID
		";

Не работает наследование классов (решено)

Пытаюсь через плугин расширить функционал ModileUser->EntityUser

1. Создал плугин «PluginReles.class.php»

<?php
if (!class_exists('Plugin')) {
    die('Hacking attemp!');
}

class PluginReles extends Plugin
{
    protected $aInherits = array(
        'entity' => array('ModuleUser_EntityUser','PluginReles_ModileUser_EntityUser'),
    );

  public function Activate()
    {
        return true;
    }


    public function Deactivate()
    {
        return true;
    }


    public function Init()
    {
    }
}
?>


Читать дальше →