У меня вопрос о производительности Symfony2.
Я развиваюсь с Symfony2 под Ubuntu 11.04 в течение нескольких недель, Apache 2.2.17, PHP 5.3.5, APC 3.1.9, no xDebug
В среде dev время, указанное на панели инструментов Symfony2, никогда не превышало 70 мс.
Сегодня я попытался установить приложение в среду Windows 7: Wampserver 2.2, PHP 5.3.8, Apache 2.2.21, APC 3.1.7, no xDebug
Компьютер в среде Windows намного лучше, чем на ubuntu (SSD, Quad core и т. Д.).
И когда я запускаю приложение в среде dev, панель инструментов всегда показывает минимум 300 мс.
Итак, вы знаете, как это возможно?
Благодаря !
EDIT: нашел ссылку на эту тему: http://fossplanet.com/f6/%5Bsymfony-users%5D-symfony2-slow-windows-xp-116465/
Я также заметил проблему с функцией file_exists (с помощью webgrind).
Итак, какие-то идеи?
Возможно, предмет уже обсуждался, но я был удивлен, не найдя ничего связанного.
TL; DR; Установите значение realpath_cache_size в значение> 1000
Редактирование 2: проблема, решаемая в этом PR: попробуйте установить realpath_cache_size для PHP.ini значение> 1000 Недавно было добавлено требование Symfony, исправляющее эту проблему: https://github.com/sensiolabs/SensioDistributionBundle/commit/cf0179711b24d84d4a29d71a4010540f4c990bd8
Редактировать: я только что увидел этот ответ: https://stackoverflow.com/a/17914570/980547 И это уменьшило время генерации страницы на 4 на окнах, когда я установил realpath_cache_size = 4096k в свой php.ini (!)
Старый ответ:
Итак, я сделал сравнение между webgrind:
На окнах (быстрый компьютер), называемых app_dev.php:
Таким образом, вы можете видеть, что веб-панель инструментов показывает время генерации 764 мс (увеличено из-за xDebug и профилирования, но все еще актуально). Webgrind показывает:
В Linux (медленный компьютер) app_dev.php:
298 мс общего времени генерации (что более чем вдвое меньше, чем у окон).
Проблема заключается в том, что файлы file_exists () и filemtime () работают гораздо медленнее, чем в Linux. В Windows PHP ищет файлы с файлами_файлов, filemtime, loadClass или findFile в 60% случаев. Это известная проблема?
Изменить: так что проблема только для среды dev, в производстве нет файлов-файлов, поскольку все кэшируется.
Я только начал развиваться с Symfony2 под Windows, и это было полной болью в заднице – я протестировал xcache, apc и eaccelerator, которые либо практически не отличались, либо просто разбивались при использовании вместе с xdebug.
Теперь я обнаружил WinCache от Microsoft – что сделало Symfony2 под Windows невероятно быстрым … Мои запросы заняли от 1,5 до 3 секунд – с WinCache до 200 мс . И это даже не беспокоит xdebug – профилирование и отладка по-прежнему работают как шарм.
Изменить: все это касается среды dev.
Единственным недостатком является то, что он работает только на nts php, и я думаю, что для модулей Apache требуется ts – если вы запустите его с помощью fcgid, хотя у вас не будет проблем.
Не могу поверить, что я проработал столько лет без этого монстра …
Ссылки:
WinCache на php.net
Официальный сайт WinCache
Бинарные
Интересно найти!
Я бы сказал, так как это не проблема symfony2, она должна быть исправлена в двоичном формате PHP.
Но кто же запускает свой вебсервер на окнах? : D
Попробуйте с ApcUniversalClassLoader http://symfony.com/doc/2.0/book/performance.html