Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数据库连接在Yii cronjob中不工作_Php_Mysql_Database_Yii_Cron - Fatal编程技术网

Php 数据库连接在Yii cronjob中不工作

Php 数据库连接在Yii cronjob中不工作,php,mysql,database,yii,cron,Php,Mysql,Database,Yii,Cron,我遵循Yii通过调用命令(在CLI(控制台)模式下运行PHP)来配置作业。 cron作业按设计工作,但是当我处理AR模型或查询SQL时,脚本/命令不起作用 我已经在config/cron.php中设置了DB连接: ... 'components'=>array( ... 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=blogandt_yiiapp',

我遵循Yii通过调用命令(在CLI(控制台)模式下运行PHP)来配置作业。 cron作业按设计工作,但是当我处理AR模型或查询SQL时,脚本/命令不起作用

我已经在config/cron.php中设置了DB连接:

...
'components'=>array(
    ...
    'db'=>array(
        'connectionString' => 'mysql:host=localhost;dbname=blogandt_yiiapp',
        //mysql:host=127.0.0.1;port=3306;
        'emulatePrepare' => true,
        'username' => '...',
        'password' => '..',
        'charset' => 'utf8',
        'tablePrefix' => 'yiiapp_', 
        'class'         => 'CDbConnection'   
    ),
 ), 
TestCommand.php:

<?php
class TestCommand extends CConsoleCommand {
    public function run($args) {        
    $dateObj = new DateTime('NOW');  //date("Y-m-d");       
    $fromTime = date_format($dateObj, "Y-m-d H:m:i");
            date_modify($dateObj, '+5 days');   
    $toTime = date_format($dateObj, "Y-m-d H:m:i"); 
    $message = "Time span is from {$fromTime} to {$toTime} ";
    mail('xyz@gmail.com', 'TestCommand run', $message, '');
    
    $criteria = new CDbCriteria;
    $criteria->addBetweenCondition('time', $fromTime, $toTime);  
    $notification = DocEventNotification::model()->findAll($criteria);
            // OR
    //$query = 'SELECT n.UserId, n.EventId FROM yiiapp_doc_event_notification n';
    //$query .= "WHERE (n.time BETWEEN '{$fromTime}' AND '{$toTime}') AND n.turn = '1' ";
    //$rows = Yii::app()->db->createCommand($query)->queryAll();
    mail('xyz@gmail.com', 'TestCommand after DB query', $message, '');
      }
  } ?>
我在配置Yii时没有包括PDO支持。
解决方案是什么?

可能是连接问题。在n之后缺少一个空格

$query = 'SELECT n.UserId, n.EventId FROM yiiapp_doc_event_notification n ';
$query .= "WHERE (n.time BETWEEN '{$fromTime}' AND '{$toTime}') AND n.turn = '1' ";

尝试告诉我们发生了什么。

尝试手动执行并查看错误!如果共享主机不允许shell访问,我如何执行命令?可能是
DocEventNotification
model类正如我在问题中所说的,我已经成功地尝试从controller/action中的
DocEventNotification
model类获取记录。(同一代码)。所以,我无法找出一个问题…您可以在某个控制器中以这种方式尝试exec命令:
$com=TestCommand$com->run(array())。或者,你可能会看到cron脚本的日志,我做了这件事却没有结果。实际上在此之前,我已经对第二行
$query.=…
$query = 'SELECT n.UserId, n.EventId FROM yiiapp_doc_event_notification n ';
$query .= "WHERE (n.time BETWEEN '{$fromTime}' AND '{$toTime}') AND n.turn = '1' ";