Почему sylius работает так медленно на локальном компьютере в dev?
Я следовал инструкциям по установке sylius для composer и получил свою локальную копию. Проблема в том, что когда я захожу в local/app_dev.php, загрузка занимает очень много времени, 12-18 секунд. Однако профилировщик показывает гораздо быстрее...
Также в инструкциях по установке не объясняется, как заставить local/app.php работать или в производственной среде. Любая информация будет полезна:).
5 ответов
Сначала позвольте мне поблагодарить @Florian за его ссылку и толчок, чтобы я немного покопался:).
Следуя инструкциям на странице начала работы sylius:
$ wget http://getcomposer.org/composer.phar
$ composer.phar create-project sylius/sylius -s dev
$ cd sylius
$ app/console sylius:install
Вы по умолчанию устанавливаете файл config_dev.yml. Это установит вашу базу данных как {dbname}_dev, а также отладку в app_dev.php. Когда включена отладка, "файлы кэша динамически перестраиваются при каждом запросе". Это то, что вызывает медленную скорость.
Что касается использования app.php(production env), вы можете запустить app/console sylius:install -e prod. Это установит обычную базу данных, и вы можете использовать app.php.
Тайна разгадана:).
Полезный ресурс: как освоить и создать новые среды - Symfony2
Если вы работаете в Windows, убедитесь, что ваш "realpath_cache_size" не меньше 5M в вашем php.ini, как рекомендовано SensioDistributionBundle. Вот так:
; php.ini
realpath_cache_size = 5M
На моей установке Sylius, работающей в среде dev, время загрузки сократилось с ~15 с до ~2 с.
Чтобы еще больше сократить время загрузки, вы можете рассмотреть возможность использования WinCache https://sourceforge.net/projects/wincache/. Я использую следующие настройки при запуске Sylius со встроенным веб-сервером PHP:
; php.ini
[wincache]
wincache.enablecli=1
wincache.filecount=16384
WinCache, кажется, работает отлично с средой разработки Sylius.
Sylius намного медленнее, чем Symfony, как в режиме производства, так и в режиме разработки, хотя он построен поверх Symfony. Причина в его ResourceBundle. Я уверен, что есть методы, чтобы ускорить его в производстве, но в любом случае это очень медленно в процессе разработки.
Я запустил Sylius с настройкой Vagrant с настройками папки синхронизации по умолчанию и обнаружил, что он очень медленный, до 45 секунд загрузки! Другие проекты Small Symfony были не так уж плохи, поэтому я подумал, что это всего лишь Sylius, а потом я прочитал, что параметры синхронизированной папки в Vagrant намного быстрее с типом NFS, доступным в системах Linux, он уменьшен с 40 до 4 секунд!
Поэтому, если вы используете Vagrant и обнаруживаете, что он работает медленно, убедитесь, что для папок синхронизации установлено NFS.
NFS поможет вам в бродячем деле, но все же вы можете найти его медленным в больших проектах. Докер был еще хуже на MACOSX. Если вы используете Linux, я думаю, что докер будет надрать задницу для развития. Кроме того, если вы используете PHP<7, перейдите на 7.0 (в старших версиях есть некоторые проблемы с Sylius atm), и вы увидите значительное улучшение производительности даже в среде разработки.
Также дайте больше оперативной памяти вашей машине Vagrant