MyTetra Share
Делитесь знаниями!
Что делать, если в Yii 2 стартовый пример basic-приложения вдруг начинает медленно работать
Время создания: 19.12.2017 19:36
Текстовые метки: php, yii 2, медленно, тормозит, basic, приложение
Раздел: Компьютер - Программирование - Язык PHP - Yii2
Запись: xintrea/mytetra_syncro/master/base/1513701384d4tokgnhoq/text.html на raw.github.com

В Yii 2 иногда возникает такая ситуация, что приложение вдруг начинает работать медленно. Даже стандартное basic-приложение, если его начать потихоньку изменять, может в какой-то момент начать медленно работать и открывать простейшие страницы по несколько секунд. Программист начинает судорожно искать, что же он наменял и в какой момент приложение стало тормозить. Но дело совсем не в тех файлах, которые были изменены программистом.


Первое что нужно сделать, если невооруженным взглядом видно, что сайт тормозит, надо открыть Инструменты разработки -> Сеть (или как там оно называется в вашем любимом браузере) и посмотреть, нет ли в момент формирования страницы ошибки. Вполне возможно, что в запросах, которые генерируются при открытии страницы, есть вот такая ошибка 404 при обращении к URL:


http://local-linuxtrash.ru/app/web/index.php?r=debug/default/toolbar&tag=5a393eaca7edc


Это URL отладочной панели, так почему на нем ошибка? Проблема в правах доступа на каталог приложения runtime и на его подкаталоги. Происходит вот что. Разработчик на локальной машине разворачивает из-под себя basic-приложение Yii2, и все файлы и каталоги имеют пользователя и группу именно этого разработчика. А веб-сервер Apache или NGinx работют от другого пользователя и группы, например www-data.


Каталог runtime служит для хранения различных сериализованных данных, которые хранятся в виде файлов. Эти файлы и каталоги внутри runtime могут создаваться не только в процессе работы страниц сайта, но и например в процессе запуска консольного скрипта yii для тех или иных действий.


В любом случае возможна ситуация, когда в каталоге runtime подкаталоги и файлы создаются от имени пользователя-разработчика. Если какие-то права прописаны только для пользователя или для группы, то пользователь www-data, от которого работает web-сервер, не может их изменить (если дело касается файлов) или не может создать файл (если дело касается каталога).


Решений тут два: можно установить права на каталог runtime и его подкаталоги с максимальными разрешениями:


chmod 777 -R ./runtime *


Это быстрый, но не хороший с точки зрения безопасности вариант. А так же он чреват в будущем тем, что такая ситуация может повториться (ресурс создастся от пользователя-разработчика, и его не сможет поменять пользователь-вебсервер).


Поэтому лучше включить пользователя-разработчика в группу www-data. Тогда вышеуказанных проблем не будет в случае, если права в этом каталоге будут заданы как допустимые на уровне групп.


Включение в группу делается просто. В файле /etc/group находится строчка, начинающаяся на www-data, и в нее добавляется нужный пользователь developuser, вот так:


www-data:x:33:developuser


Если нужно добавить несколько пользователей, то их перечисляют через запятую, без пробелов.


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования