如何在Yii2中运行命令提示符命令?

时间:2015-05-06 09:01:04

标签: cmd yii2

  

这里我想在yii2

中运行命令提示符命令      

这是我要运行此命令的命令yii2

C:\wamp\www\source>yii test\pending
  

如何使用以下按钮执行上述命令。

<a href="#" class="btn btn-info" role="button">Execute</a>

更新

  

TestController.php

public function actionPending()
{   

    $today = date('Y-m-d');

    $dt1 = ArrayHelper::map(Claimprocess2::find()->all(),'id','turn_around_time_set');
    $dt2 = ArrayHelper::map(Claimprocess2::find()->all(),'id','updated_at');
    $name = ArrayHelper::map(Claimprocess2::find()->all(),'id','id');
    foreach ($dt1 as $key => $value) 
    {
        $trt = print_r($value, true);
        $update = print_r($dt2[$key], true);
        $name1 = print_r($name[$key], true);

        if($today == $trt && $update == '')
        {
            $sql = "INSERT INTO pending (claimer_name, status, template, last_trt, email) 
                    SELECT claimprocess_start_for, status, template, turn_around_time_set, tpa_email  
                    FROM claimprocess_2 WHERE id=$name1";

            $query = Yii::$app->db->createCommand($sql)->execute();

            echo "cron service runnning";
        }

    }

}`
  

主local.php

'consoleRunner' => [
        'class' => 'vova07\console\ConsoleRunner',
        'file' => '@console/controllers' // or an absolute path to console file
    ],
  

pendingcontroller.php

public function actionTest()
{
    $return = Yii::$app->consoleRunner->run('test/pending');
    echo "$return";
}
  

待决/ index.php的

<?= Html::a('Execute', ['pending/test'], ['class' => 'btn btn-primary']) ?>
  

在按下执行按钮时获取值1,命令未执行

     

先谢谢

4 个答案:

答案 0 :(得分:1)

我认为你可以尝试这样的事情:

您的HTML文件。

<a href="test.php?runtest=true" class="btn btn-info" role="button">Execute</a>

test.php的

<?php
if($_REQUEST['runtest']) {
  $result = shell_exec('yii test\pending');
  echo $result;
}
?>

但是在php文件中执行shell命令会非常危险。

答案 1 :(得分:1)

您可以使用此扩展程序:Console Runner

按照上面的链接并使用此命令运行控制台作业:

Yii::$app->consoleRunner->run('test\pending');

您可以将上述代码放在控制器操作中,并在单击按钮时调用此操作。

<强>更新

例如。 的前端\控制器\ SiteController

use vova07\console\ConsoleRunner;

public function actionIndex()
{

     $cr = new ConsoleRunner(['file' => '@my/path/to/yii']);
     $cr->run('test/pending');
}

<强>安慰时,安慰\控制器\的TestController:

public function actionPending()
{
    // Your code
}

然后您可以将索引操作称为:

echo Html::a('Execute', ['site/index']);

答案 2 :(得分:0)

试试这个(如果你想通过PHP执行):

  

这是yii(没有分机,不是yii.bat)

     

确保将php文件夹添加到PATH变量(Windows)

$op = shell_exec ( 'absolute/path/to/yii ' . 'cache/flush-all' );
\yii\helpers\VarDumper::dump($op, 10, 1);

输出:

The following cache components were processed:

* cache (yii\\caching\\FileCache)

答案 3 :(得分:-1)

我已经通过在php.ini文件中添加这两个扩展来解决了这个问题

count = count + 1