Yii 1.1: Our WebApp that will run without downtime during update/upgrade

7 followers

How many of us wonder how we can upgrade the website without hurting the operation of our WebApp?

Even if we put new functionality, change the look and feel of the UI, fixed some bugs just discover and even if we upgrade the core (Yii Framework itself).

I come up to the idea of remodifying the file structure of the Yii.

Default Structure of the Yii Framework:

assets/
css/
framework/
images/
protected/
themes/
index.php

All we need is to transfer the outer folder of the default file structure of Yii Framework.

In our index.php code, we have:

<?php
// change the following paths if necessary
$yii=dirname(__FILE__).'/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
 
// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
 
// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
 
require_once($yii);
Yii::createWebApplication($config)->run();

We can actually remodify it like this:

assets/
css/
yii/
    1.1.8/      
images/
webapp/
    1.0/
themes/
index.php

In our index.php with the implementation of the modified file structure:

<?php
// change the following paths if necessary
$yii=dirname(__FILE__).'/yii/1.1.8/yii.php';
$config=dirname(__FILE__).'/webapp/1.0/config/main.php';
 
// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG',true);
 
// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
 
require_once($yii);
Yii::createWebApplication($config)->run();

Explanation:

In the directory:

yii/
    1.1.8/

we move the core in the folder 1.1.8 (based on the version of the Framework), so in this way, we can upgrade the Yii Framework without hurting the operation.

In our WebApp folder:

webapp/
    1.0/

This way, we are working based on the version of the WebApp, we now rename the folder 'protected' to 'webapp', and then create a folder based on the version of the webapp, in the example is '1.0' ( in this folder, we put all the subfolders we have 'models, controllers etc..').

Total 3 comments

#4949 report it
PrplHaz4 at 2011/08/31 01:49pm
Anyone else working with Yii this way?

I'd be interested in knowing if others are doing it this way. It seems to make a lot of sense, and may be a good convention to follow...

#4937 report it
Pinoy Coderz at 2011/08/30 08:08pm
Thats the real point of the idea.

Hi huntzriz, thank you for dropping a comment..

Yes, the advantage of this one is we only modify the index.php file at root directory to make switch between version we are working on or make an upgrade of the WebApp...

I come up to this kind of idea, from those giant website (i.e. google, yahoo etc.).

Since if our WebApp is in the production mode, we have to avoid a downtime.

Regards,
Pinoy Coderz

#4933 report it
Huntz at 2011/08/30 05:24pm
Interesting!

This way, we can create releases and rollback if something goes wrong! Thanks!

Leave a comment

Please to leave your comment.

Write new article