Hi all,
I set up a Command : "cron".
In my local server or in production (unix) server the very very basic command works
very very basic = just write in a file a timestamp whenever the command is called.
I was happy, creating a command was easy, and I decided to access models of my application in my "cron" command.
And then There is problem. Accessing Models seems to be a problem
my console config file contains all needed (i hope)
return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'name'=>'console',
// preloading 'log' component
'preload'=>array('log'),
// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
),
// application components
'components'=>array(
// uncomment the following to use a MySQL database
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=yii_ama',
'emulatePrepare' => true,
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'enableProfiling'=>true,
'enableParamLogging' => true,
),
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'logFile'=>'cron.log',
'levels'=>'error, warning',
),
array(
'class'=>'CFileLogRoute',
'logFile'=>'cron_trace.log',
'levels'=>'trace',
),
),
),
),
);
In my cron command :
class CronCommand extends CConsoleCommand {
private $_mDateArray;
public function run($args) {
Yii::app()->setTimeZone("Europe/Paris");
$this->_mDateArray = CTimestamp::getDate();
$myProfilcompte = new ProfilCompte;
}
}
And when I launched the command I get:
PHP Error[2]: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock)
in file /Volumes/HD2/travail/www/yii/db/CDbConnection.php at line 405
#0 /Volumes/HD2/travail/www/yii/db/CDbConnection.php(405): PDO->__construct()
#1 /Volumes/HD2/travail/www/yii/db/CDbConnection.php(356): CDbConnection->createPdoInstance()
#2 /Volumes/HD2/travail/www/yii/db/CDbConnection.php(313): CDbConnection->open()
#3 /Volumes/HD2/travail/www/yii/db/CDbConnection.php(291): CDbConnection->setActive()
#4 /Volumes/HD2/travail/www/yii/base/CModule.php(372): CDbConnection->init()
#5 /Volumes/HD2/travail/www/yii/base/CApplication.php(429): CConsoleApplication->getComponent()
#6 /Volumes/HD2/travail/www/yii/db/ar/CActiveRecord.php(609): CConsoleApplication->getDb()
#7 /Volumes/HD2/travail/www/yii/db/ar/CActiveRecord.php(2275): ProfilCompte->getDbConnection()
#8 /Volumes/HD2/travail/www/yii/db/ar/CActiveRecord.php(372): CActiveRecordMetaData->__construct()
#9 /Volumes/HD2/travail/www/yii/db/ar/CActiveRecord.php(387): model()
#10 /Volumes/HD2/travail/www/yii/db/ar/CActiveRecord.php(62): ProfilCompte->getMetaData()
#11 /Volumes/HD2/travail/www/amayiii/protected/commands/CronCommand.php(13): ProfilCompte->__construct()
#12 /Volumes/HD2/travail/www/yii/console/CConsoleCommandRunner.php(63): CronCommand->run()
#13 /Volumes/HD2/travail/www/yii/console/CConsoleApplication.php(88): CConsoleCommandRunner->run()
#14 /Volumes/HD2/travail/www/yii/base/CApplication.php(158): CConsoleApplication->processRequest()
#15 /Volumes/HD2/travail/www/yii/yiic.php(33): CConsoleApplication->run()
#16 /Volumes/HD2/travail/www/amayiii/protected/yiic.php(7): require_once()
Do you know where this problem comes from ?
Thanks