Understanding Yii CConsoleApplication
On 2 minutesThere are certain tasks which can be better performed offline or using the console rather than using and online Web application. It is particularly tedious and time consuming when you use the web interface to do such task. Each request will have to download css, JavaScript files and you need to design a user interface to work with. Some tasks such as email sending, search indexing, and general cron jobs are better done using the console based approach.
One can write a PHP script to do all that. The difficulty here is making the scripts interact with your application. This could be in the area of accessing resources used by your web application. To overcome this, Yii provides an object-oriented console enabled framework making it easy to interacts with you web applications. The base class for this framework is the CConsoleApplication. CConsoleApplication together with CWebApplication
share the same base class CApplication
.
CConsoleApplication
extends CApplication
by providing functionalities specific to console requests. In particular, it deals with console requests through a command-based approach.
If you recall from our CApplication discussion, I mentioned one important method processRequest()
,where the actual request processing work is done. The implementation of this method is one area where CConsoleApplication differs from CWebApplication. The user requests for CConsoleApplication
s have different format from normal web request made to a CWebApplication. The format for console request is
yiic <command-name> <action-name> --option1=value --option2=value2
The following properties are defined by the CConsoleApplication
class.
commandMap property
public array $commandMap;
//mapping from command name to command configurations.
commandPath property
public string getCommandPath()
public void setCommandPath(string $value)
//the directory that contains the command classes. Defaults
//to 'protected/commands'.
commandRunner property read-only
public CConsoleCommandRunner getCommandRunner()
Returns the command runner.
CConsoleApplication
responds to request using the CConsoleCommand
. You can think of CConsoleCommand
as the console version of CController
. It passes the console request and dispatches it to the appropriate action.