Yii в phar'е

    Как только я узнал об исполняемых PHP-архивах phar, сразу же захотелось их попробовать. Разработчиками, да и на хабре, это добро было довольно неплохо разрекламировано. Была информация о том, что использование архивов +APC даёт прирост производительности в 6 раз.
    Заряженный этим заявлением, я захотел проверить все на практике, не просто примером из документации, а примером из жизни. Так как занимаюсь разработкой на yii, то yii был выбран подопытным кроликом. Честно, попыток создания архива (yii) было много, но все они были не рабочими до последнего момента. Сразу скажу — скрипт сбора архива не мой, а человека по имени Rasmus Schultz, за что ему огромная благодарность! Я лишь внес мелкие незначительные изменения.

    Ожидал от phar'а заявленные 6x прироста, но на практике, в боевых условиях, результат более земной. Итак, тестировал я на 6 разных машинах + на локальной машине. На 5 из 6 заработал, на 3 из них без каких либо проблем. Как сказано разработчиками — без APC архивы использовать бесполезно, во всяком случаи так показала практика. Скорость и потребления памяти немного увеличиваются. С APC прирост в скорости в среднем составляет 20-40%, а потребление памяти -10%.

    phar архив yii framework скачать можно тут

    Как использовать

    Все просто, скачиваем, помещаем архив там где у вас лежит папка с фремворком.
    В index.php заменяем ваше подключение фремворка на:
    $yii="phar://".dirname(dirname(FILE)).'/yii.phar/yii.php';
    или
    $yii="phar://".dirname(dirname(FILE)).'/yii.phar/yiilite.php';
    

    (для структуры каталогов из коробки изменяем путь на свой )
    В принципе все.

    Если возникает ошибка типа:
    Необходимый для отображения asset "phar:///home/yoyoCMF/yii.phar/web/js/source" не существует.
    

    в конфиге прописываем

    'clientScript'=>array
                    (
                        ...
                        //устанавливаем нашу директорию со скриптами(ЕСЛИ ИСПОЛЬЗУЕМ YII.PHAR)
                        'coreScriptUrl'=>DIRECTORY_SEPARATOR.'js'.DIRECTORY_SEPARATOR,
                    ),
    

    Других проблем с использованием архива фремворка у меня не наблюдалось

    ЗЫ: Расписывать на каких машинах производилось тестирование не вижу смысла, версия php 5.3.2, 5.3.5, 5.3.8, 5.4.4, 5.4.6.
    В архиве yii framework 1.1.12.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 19

      +6
      Реквестую релизы yii и в виде phar архивов :)
        0
        В багтрекере уже есть: github.com/yiisoft/yii/issues/800
        Выпустят после того, как накопится достаточно большое количество людей, проверивших стабильность работы на своих сайтах, ну и будут исправлены возникшие при тестировании ошибки.
        +1
        На 5 из 6 заработал, на 3 без каких либо проблем.

        Т.е. ошибка, связанная с ассетами — единственная среди всех этих сайтов?
          0
          да
          0
          куда лучше все собрать в один файл и пропустить через APC. Файлы внутри phar APC не кеширует как надо ;) Тестировал на ZendFramework
            0
            Попробую на досуге. спс
              0
              Какой прирост получили в итоге от упаковки ZF?
                +1
                Я паковал только нужные 10-15 модулей. Прирост скорости инклуда был на уровне в 10-15 раз
                +1
                вот тут прочитать можно как упаковывать Zend Framework — tokarchuk.ru/2011/12/zend-framework-2-in-phar/
                0
                Интересно, какая-нибудь IDE умеет работать с phar-архивом, т.е. доставать информацию для автокомплита и анализа кода?
                0
                Недавно узнал интересную штуку, что в phar архивах сохраняются комментарии. Если кому эта информация поллезна или интересна )
                  +1
                  Попробовал на одном проекте, роста производительности нет.

                  Yii 1.1.10
                  PHP Version 5.3.10
                  APC 3.1.3p1

                  Без phar: Общий отчет (Время: 0.04752с, Память: 2,915Кб)
                  C phar: Общий отчет (Время: 0.07315с, Память: 6,957Кб)
                    0
                    А когда было без PHAR yiilite.php использовался?
                      0
                      Нет. Кстати, если использовать с phar yiilite.php то результаты такие: (Время: 0.03612с, Память: 5,808Кб).
                        0
                        Получается, что всё-таки выиграли 0.011 секунды. :) Правда по памяти почти на 3 метра больше.
                      +1
                      Мои показатели

                      yiilite
                      Отработало за 0.00686 с. Скушано памяти: 1.4MB
                      Отработало за 0.00967 с. Скушано памяти: 1.4MB
                      Отработало за 0.00827 с. Скушано памяти: 1.4MB

                      yiilite phar
                      Отработало за 0.00545 с. Скушано памяти: 3.27MB
                      Отработало за 0.00510 с. Скушано памяти: 1.83MB
                      Отработало за 0.00517 с. Скушано памяти: 1.83MB
                      Отработало за 0.00529 с. Скушано памяти: 1.83MB

                      yii
                      Отработало за 0.13345 с. Скушано памяти: 2.66MB
                      Отработало за 0.01085 с. Скушано памяти: 1.19MB
                      Отработало за 0.01094 с. Скушано памяти: 1.19MB
                      Отработало за 0.01327 с. Скушано памяти: 1.19MB

                      yii phar
                      Отработало за 0.00590 с. Скушано памяти: 1.56MB
                      Отработало за 0.00620 с. Скушано памяти: 1.56MB
                      Отработало за 0.00710 с. Скушано памяти: 1.56MB
                      Отработало за 0.00605 с. Скушано памяти: 1.56MB

                  Only users with full accounts can post comments. Log in, please.