@shur1k Боюсь обмануть, но по-моему nginx сначала выполняет реврайты, а потом уже выбирает нужный location, полученный в результате реврайта, и применяет настройки полученного location. В вашем случае реврайтилось на location с php, в котором авторизация не была объявлена.
@zbender Я спрашиваю не про модель, а про компонент Yii::app()->user. В конфиге приложения есть секция components, в которой должен быть указан компонент user, у которого в свою очередь должно быть поле class, в котором указан класс, экземпляр которого вы собственно и получаете когда пишите Yii::app()->user. Если у вас там стандартный CWebUser используется, то он юзает сессии, куки и прочие специфичные для http-штуки. Если вы тесты в консоли запускаете, то тогда неудивительно, что оно у вас некорректно работает. Я для тестов всегда делаю свой класс-заглушку вместо CWebUser и в конфиге для тестов указываю его.
@isawillbenice Что вы подразумеваете под тяжелым запросом? Ведь насколько я понял у вас запрос по условию WHERE key1=param1 AND key2=param2. При наличии составного индекса такой запрос летать будет.
>Так почему тогда в запрос попадает undefined? Это особенность js или mysql?
Это даже не особенность, это нормальное поведение асинхронного яваскрипт кода с замыканиями.
А ваши примеры из последнего комментария не имеют отношения к рассматриваемого вопросу, потому что, во-первых, там нет асинхронного кода, во-вторых нет замыканий.
Рекомендую поглубже разобраться с такими фундаментальными понятиями яваскрипта, как асинхронное выполнение, EventLoop, замыкания, области видимости.
Возвращаясь к вашей задачи. Я так понимаю, вы в цикле делаете запросы. После выполнения i-го запроса вам надо i-й элемент массива сделать undefined. Делайте запрос в отдельной функции, не создавая замыканий:
function oneRequest(a, i) {
//делаем запрос с a[i], в каллбэке a[i] делаем undefined.
}
for (i=0; i<n; ++i) {
oneRequest(a, i);
}
Но даже в этом случае например после цикла у вас не факт, что все значения будут undefined и не факт, что к этому моменту выполнятся все запросы, потому что они асинхронные.
Если вы точно хотите поймать момент, когда выполнятся все запросы, то заведите счетчик в глобальной переменной, в каллбэке увеличивайте его на 1 и там же (в каллбэке) проверяйте, достиг ли счетчик размера массива. Если достиг - значит этот тот самый момент когда все запросы выполнены.
> а в каллбэке а[] будет являться тем чем надо
Нет. Вы замыкаете переменную i, ссылку на нее, а она к моменту вызова уже другая. Не верите - откройте любую яваскриптовую консоль и напишите такое:
var a = [1, 2, 3, 4, 5];
var i = 0;
var f = function(){delete a[i]};
i = 3;
f.call();
И посмотрите, что у вас будет в массиве a.
Вы лучше скажите, почему вам "полюбому надо удалять" и понимаете ли вы, что именно делает оператор delete в яваскрипте?
@GeraldIstar Если говорить в общем, то миграции - это автоматизированный и достаточно надежный способ преобразования структуры БД. В зависимости от используемых вами технологий, они могут быть реализованы по-разному. Я например в основном работую с PHP-шным фреймворком Yii, который имеет свою реализацию миграций из коробки: yiiframework.ru/doc/guide/database.migration
Для PHP есть и другие реализации миграций, например в Doctrine (webdev-tales.ru/post/62178815430/doctrine-migratio...)
Я не знаю, какой язык и какие технологии используете вы, но уверен, и для вас найдется подходящий инструмент для миграций