Почему 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

Другие вопросы по тегам