Кеширование в PhpManager

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Rakovskiy
Сообщения: 53
Зарегистрирован: 2014.08.18, 13:29
Откуда: С гугла
Контактная информация:

Кеширование в PhpManager

Сообщение Rakovskiy »

Написал модуль для админки по управлению правами и ролями доступа. Изначально работал через DbManager, позже перевёл на PhpManager. Но теперь получается при создании той же роли стоит редирект на страницу со всеми ролями которые собираются в ArrayDataProvider

Код: Выделить всё

public function actionIndex()
    {
        $data = Yii::$app->authManager->getRoles();
        $dataProvider = new ArrayDataProvider([
            'models' => $data,
            'totalCount' => count($data)
        ]);

        return $this->render('index', [
            'dataProvider' => $dataProvider,
        ]);
    }
 
И выводятся через GridView

Код: Выделить всё

echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => $columns,
]);
 
Так вот добавили мы роль, нас перекинуло на index но роли нет, обновляем 2 раза страничку и она появляется. При удалении нужно обновить три раза страничку. Думал виноват GridView или ArrayDataProvider ну может как-то кешируют но пробовал дампить $data = Yii::$app->authManager->getRoles(); так он возвращает сразу роли без той, что мы добавили, а обноаили пару раз страничку и всё нормально.

Пробовал такой вариант

Код: Выделить всё

$auth = Yii::$app->authManager;
        $permission = $auth->createPermission('test');
        $auth->add($permission);
        VarDumper::dump($auth->getPermissions());
 
Но тут всё нормально. Пробовал при создании роли вместо редиректа дампить Yii::$app->authManager->getRoles() но как не странно наша роль имеется в массиве.


Т.е. если стоит редирект то все роли не сразу обновляются, а как будто кешируются
Rakovskiy
Сообщения: 53
Зарегистрирован: 2014.08.18, 13:29
Откуда: С гугла
Контактная информация:

Re: Кеширование в PhpManager

Сообщение Rakovskiy »

Хм, наверное кеширует require, но почему не пойму.

Я в представлении делаю дамп сразу после добавления, удаления прав.

require '../../common/rbac/items.php'

Запись появляется через несколько обновлений. Открываю файл через file_get_content() и всё моментально появляется.

Пробовал на apache и nginx. Всё одинаково работает
Rakovskiy
Сообщения: 53
Зарегистрирован: 2014.08.18, 13:29
Откуда: С гугла
Контактная информация:

Re: Кеширование в PhpManager

Сообщение Rakovskiy »

выходит дело не в Yii а в php?
Rakovskiy
Сообщения: 53
Зарегистрирован: 2014.08.18, 13:29
Откуда: С гугла
Контактная информация:

Re: Кеширование в PhpManager

Сообщение Rakovskiy »

Хм, если файл items.php изменяю в IDE то всё нормально
padlyuck
Сообщения: 302
Зарегистрирован: 2015.02.03, 09:50

Re: Кеширование в PhpManager

Сообщение padlyuck »

похоже на opcache или ему подобное.
Rakovskiy
Сообщения: 53
Зарегистрирован: 2014.08.18, 13:29
Откуда: С гугла
Контактная информация:

Re: Кеширование в PhpManager

Сообщение Rakovskiy »

padlyuck писал(а):похоже на opcache или ему подобное.
Дело в том, что я проверял на чистом apache и nginx
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Кеширование в PhpManager

Сообщение samdark »

Opcache или APC к apache и nginx отношения не имеют. У вас, кстати, не HHVM?
Rakovskiy
Сообщения: 53
Зарегистрирован: 2014.08.18, 13:29
Откуда: С гугла
Контактная информация:

Re: Кеширование в PhpManager

Сообщение Rakovskiy »

Sam Dark писал(а):Opcache или APC к apache и nginx отношения не имеют. У вас, кстати, не HHVM?
Нет.
Аватара пользователя
Insolita
Сообщения: 788
Зарегистрирован: 2011.06.06, 01:39
Контактная информация:

Re: Кеширование в PhpManager

Сообщение Insolita »

нет я так понимаю просто работа по сохранению в файл спроверкой зависимостей всяких и проч. время отнимает - я тоже писала интерфейс на базе phpManager и пришлось просто слипы ставить перед аякс-апдейтом потому что долго действительно и с opcache и без
Rakovskiy
Сообщения: 53
Зарегистрирован: 2014.08.18, 13:29
Откуда: С гугла
Контактная информация:

Re: Кеширование в PhpManager

Сообщение Rakovskiy »

Insolita писал(а):нет я так понимаю просто работа по сохранению в файл спроверкой зависимостей всяких и проч. время отнимает - я тоже писала интерфейс на базе phpManager и пришлось просто слипы ставить перед аякс-апдейтом потому что долго действительно и с opcache и без
Хм, действительно помог sleep в 3 секунды. Но почему так и как это исправить?
Ответить