我正在研究yii2
。我有一个创建功能,我想在每24小时后在后台运行。
public function actionCreate()
{
$model = new MeterPing();
// CURL code to get results from web-api
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
同样在这个函数中,我将从web-API
获取一些记录。但我主要担心的是每24小时后在后台运行上述功能。
更新1
根据建议,我在console\controller
创建了一个控制器
namespace console\controllers;
use yii\console\Controller;
class TestController extends Controller {
public function actionIndex() {
echo "cron service runnning";
}}
现在,为了测试它我遵循这个link并使用cmd
创建了一个运行服务,其中包含以下参数
现在,按照建议我按照每个步骤进行操作。 .bat
文件包含
@Echo off
title My Cron Job
:: See title at the top
php E:\xampp\htdocs\inventory-web\yii test
pause
保存文件并将其添加到任务计划程序后。我试图从这个界面运行它。我确实看到一个cmd打开并显示消息。
我该怎么做?任何帮助将受到高度赞赏。
您可以使用Windows的任务计划程序
.bat
文件,其中应包含运行Yii控制台应用程序controller/action
的命令,如果您创建扩展TestController
并添加yii\console\controller
操作的控制器类create
,从Yii控制台应用程序运行该操作,您将使用gitBash在项目根目录中键入./yii test/create
或控制台,所以我们将这个命令添加到.bat
文件,提供project_root/yii
的完整路径,这是Yii控制台引导程序文件。这是作为Yii控制器动作代码的一部分运行作业的主要内容。打开记事本并复制下面的代码并保存为qazxsw poi,名称为qazxsw poi
.bat
注意:确保你在my-cronjob.bat
中有@Echo off
title My Cron Job
:: See title at the top
php F:\xampp\htdocs\my-project\yii test/create
pause
,或者你应该在上面的php
文件中提供Windows Path Variable
的完整路径
php.exe
.bat
Daily
Action
文件,然后按Next和Finishmy-cronjob.bat
并右键单击刚刚创建的cronjob并打开属性。注意:如果用户已登录,您可以选择运行cronjob,默认情况下,只有在用户登录后才能运行,您可以更改该选项。
现在,您可以通过右键单击并选择运行来手动运行任务,它将运行Run with highest privileges
中指定的所需或等待它在指定时间触发。
以上设置将打开命令提示符并运行任务,如果您希望调度程序最小化运行任务,您应该看到此controller/action
并相应地更新任务设置。此外,您也可以将最后一行my-cronjob.bat
更改为link
。
我在发布答案之前测试了它,因为我家里有pause
操作系统,因此无法在办公室测试后发布答案。
在我看来,你正在寻找一个Exit
。
您必须创建一个控制台cronjob,然后将其添加到服务器上的crontab。上面的链接有一个关于如何为Yii2设置的wiki。
每天下午3点运行的示例crontab:
Windows10