如何创建每 3 天从数据库中删除的 yii 高级控制台命令
How to create a yii advanced console command that delete from database every 3 days
在我的数据库中,我有 table 名称 post 并且有列名称 day 我想创建一个 yii2 高级控制台命令 删除 post我已经超过 3 天了,有人可以帮我吗?
我将为您提供一个命令示例,用于清理尚未确认电子邮件的用户的数据库。
<?php
namespace app\commands;
use app\models\User;
use yii\console\Controller;
class LimpiarController extends Controller
{
public function actionIndex()
{
echo User::deleteAll(['and', 'confirmed_at is null', ['>', '(current_timestamp - to_timestamp(created_at))', '24 hours']]);
}
}
你想要做的是,创建一个 Cron 作业来删除 post 超过 3 天的
第 1 步:在您的 console/controllers 目录中创建一个控制器,如下所示
<?php
namespace console\controllers;
use Yii;
use yii\console\Controller;
use yii\helpers\Console;
class CronController extends Controller {
public function actionTest() {
echo "Test cron job"; // your logic for deleting old post goes here
exit();
}
}
注意: CronController
是controller的名字,action是test
第 2 步: 要 运行 您的名为 test
的 cron 作业,您需要在根目录中包含 yii
文件。 yii 文件代码如下所示
#!/usr/bin/env php
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/console/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/common/config/main.php'),
require(__DIR__ . '/common/config/main-local.php'),
require(__DIR__ . '/console/config/main.php'),
require(__DIR__ . '/console/config/main-local.php')
);
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
注意: 确保您的 console/config
目录中包含所有必需的配置文件。
第 3 步:现在是时候 运行 你的 cron 作业了
在命令 prompt/terminal 中转到您的根目录并执行以下命令,您必须看到在测试操作中回显的消息。
php yii cron/test
这里
cron => 控制器名称
测试 => 动作名称
在我的数据库中,我有 table 名称 post 并且有列名称 day 我想创建一个 yii2 高级控制台命令 删除 post我已经超过 3 天了,有人可以帮我吗?
我将为您提供一个命令示例,用于清理尚未确认电子邮件的用户的数据库。
<?php
namespace app\commands;
use app\models\User;
use yii\console\Controller;
class LimpiarController extends Controller
{
public function actionIndex()
{
echo User::deleteAll(['and', 'confirmed_at is null', ['>', '(current_timestamp - to_timestamp(created_at))', '24 hours']]);
}
}
你想要做的是,创建一个 Cron 作业来删除 post 超过 3 天的
第 1 步:在您的 console/controllers 目录中创建一个控制器,如下所示
<?php
namespace console\controllers;
use Yii;
use yii\console\Controller;
use yii\helpers\Console;
class CronController extends Controller {
public function actionTest() {
echo "Test cron job"; // your logic for deleting old post goes here
exit();
}
}
注意: CronController
是controller的名字,action是test
第 2 步: 要 运行 您的名为 test
的 cron 作业,您需要在根目录中包含 yii
文件。 yii 文件代码如下所示
#!/usr/bin/env php
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/console/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/common/config/main.php'),
require(__DIR__ . '/common/config/main-local.php'),
require(__DIR__ . '/console/config/main.php'),
require(__DIR__ . '/console/config/main-local.php')
);
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
注意: 确保您的 console/config
目录中包含所有必需的配置文件。
第 3 步:现在是时候 运行 你的 cron 作业了
在命令 prompt/terminal 中转到您的根目录并执行以下命令,您必须看到在测试操作中回显的消息。
php yii cron/test
这里
cron => 控制器名称
测试 => 动作名称