За последние 24 часа нас посетили 22498 программистов и 1200 роботов. Сейчас ищут 702 программиста ...

serialize/unserialize vs eval

Тема в разделе "PHP для новичков", создана пользователем Koc, 11 ноя 2009.

  1. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Посоветуйте-ка мне, что лучше:

    а) хранить в памяти тело класса, eval'ить его и создавать его инстанцию или б) хранить на диске, создавать инстанцию, сериализовывать объект, запихивать его в память, потом по мере необходимости доступа к нему доставать из памяти и десериализовывать?
     
  2. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Лучше для чего?
     
  3. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    для кеширования откомпилированных шаблонов, блин)
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    ob_start()
    ob_get_contents()
    ob_end_clean()

    Зачем сериализация?
     
  5. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    хранить в памяти сериализованный класс и по мере необходимости десериализовывать. eval вроде медленее должен быть.

    еще, как вариант - хранить откомпилированные шаблончики в таблице типа memory базы данных.
     
  6. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Simpliest
    откомпиллированный шаблон != сгенерированный блок. Просто у меня кеш шаблонов выглядит примерно так

    PHP:
    1. <?php
    2. class CachingTemplate_akskkwiwidujnsnsmskskdjsjsn extends TemplateSystem
    3. {
    4.     public function __construct(TemplateContext $context)
    5.     {
    6.         $this->context = $context;
    7.     }
    8.     public function render()
    9.     {
    10.         echo "<ul>"
    11.         ${133} = (isset($context['foo'])) ? ((is_array($context['foo'])) ? $context['foo'] : array()) : array();
    12.         foreach (${133} as $bar)
    13.         echo "<li>$bar</li>"
    14.         echo "</ul>"
    15.     }
    16. }
    DarkElf
    о, спасибо. Вообще лучше потестить это дело, ну посмотрим. Про memory тоже интересно, поищу че-нить на эту тему.
     
  7. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    хотя вот товарищ говорит что проще этот файл инклюдить с диска
     
  8. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    А, ну, да. Я забыл что вы страдаете маразмом Смарти-шаблонов...
    Но я всеравно не понимаю... Как выглядит твой скомпилированный и нескомпилированный шаблоны...
    Зачем тебе их сериализовать?
    AFAIK html страница не сериализуется :)

    Не надо... БД это одно из самых узких мест при масштабировании.
    Поэтому лишнего туда не пихаем.
     
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    И он вобщем-то прав. Поскольку этот файл еще и закешируется опкод-кешером.
     
  10. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Еще бы создатель фреймворка Symphony был неправ, г.

    Ладно, глупую идею отбросил. Всем спасибо.