Временная зона

Всем привет!

Подскажите,какой наипростейший способ, заставить при каждом старте MySQL сессии выполнять определнный запрос

SET time_zone = ‘America/Los_Angeles’;

Спасибо.

Можно сделать расширяющий класс для CDbConnection и там это всё прописать.

и как потом заставить все классы которые будут работать с этим соединением работать, использовать этот перегруженный класс ?

Я имею ввиду что к примеру все они в итоги вызывают CDbCconnection для своих нужд.

А кто будет вызывать MyCDbConnection ? или я не прав ?

При каждом старте mysql или перед каждым запросом к базе?

Имеется ввиду конечно клиентом.

Если бы речь шла о старте сервера накой мне нужно это делать через Yii ? :rolleyes:

А что на счет Behavior для CDbConnection?

убил :slight_smile:

Насчет Behavior Я пока ничего не знаю :(

Пошел читать … понимать

http://www.yiiframework.com/doc/guide/extension.use#behavior

Там есть пример того, как в файле конфигурации подключается behavior к компоненте db

Честно говоря, покопался в исходниках yii и в документации и уже не уверен, что этот вариант подойдет.

Но ведь для чего-то behaviors поддерживаются в CDbConnection?

Но действительно другой и более верный - создать подкласс CDbConnection с перегрузкой нужных методов и использовать его.

Класс то можно перегрузить, только почему его начнет использовать приложение ? или что нужно сделать что бы начали ?

Спасибо.

Переписать соответствующие строки в файле конфигурации:




return array(

    'components'=>array(

        'db'=>array(

            'class'=>'MyDbConnection',

        ),

        //....

    ),



Вот нашел как я делал в одном приложении - с помощью перегрузки метода init() контроллера.




	public function init()

	{

		// Устанавливаем временной пояс

		date_default_timezone_set($user->timezone);

		$tz = date("Z");

		$tz = sprintf('%s%02d:%02d', ($tz < 0 ? '-' : '+'), abs($tz / 3600), abs($tz % 3600) / 60);

		Yii::app()->db->createCommand('set @@session.time_zone = "' . $tz . '";')->execute();					

		

		return parent::init();

	}




Хм… действительно.

Стоит попробовать.

Кстати а в какую папку этот свой класс надо положить ?

В любую подходящую, которая описана в конфигурации в массиве import.

Обычно это в папку components.

спасибо!