我正在研究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";
}}现在,为了测试它,我遵循了这个链接并使用cmd创建了一个具有以下参数的运行服务

现在,按照建议,我已经尝试了每一步。.bat文件包含
@Echo off
title My Cron Job
:: See title at the top
php E:\xampp\htdocs\inventory-web\yii test
pause保存文件并将其添加到任务调度程序之后。我试着从这个界面运行它。我确实看到了一个cmd的开口并显示了信息。
我该怎么做呢?任何帮助都将不胜感激。
发布于 2018-05-03 20:03:20
您可以为windows使用任务计划程序
.bat文件,该文件应该包含运行Yii控制台应用程序controller/action的命令,如果您创建一个扩展yii\console\controller和添加create操作的控制器类TestController,那么要从Yii控制台应用程序中运行该操作,您可以使用gitBash或console在项目根目录上键入./yii test/create,因此我们将通过向Yii控制台引导文件project_root/yii提供完整的路径来将该命令添加到.bat文件中。这是作为Yii控制器操作代码的一部分来运行作业的主要内容。打开记事本并复制下面的代码,保存为.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 php.exe in 窗口路径变量 ,或者您应该在上面的 .bat E 133文件E 234中提供到的完整路径。
创建任务计划程序的步骤


Daily 选择触发时间


Action Select 启动程序

my-cronjob.bat 现在选择文件,然后按Next和Finish

Task Scheduler Library 现在转到任务管理器,选择,右键单击您刚刚创建的cron作业并打开属性.

Run with highest privileges Select
注意:如果用户登录或不登录,您可以选择运行cron作业,默认情况下,只有当用户登录时才运行它,您可以更改该选项。
也就是说,现在您可以通过右键单击并选择run来手动运行任务,它将运行my-cronjob.bat中指定的所需的my-cronjob.bat,或者等待它在指定的时间触发。
在后台运行
以上设置将打开命令提示符并运行任务,如果您希望调度程序运行任务最小化,您应该看到这个链接并相应地更新任务设置。另外,您也可以将最后一行pause更改为Exit。
在这里发布答案之前,我已经测试过它,因为我在家里有Windows10 操作系统,所以如果没有办公室的测试,就不能发布答案。
发布于 2018-05-03 07:20:50
在我看来,你是在找克隆约伯。
您必须创建一个控制台cronjob,然后将其添加到服务器上的crontab中。上面的链接提供了一个关于如何为Yii2设置这个链接的wiki。
例如crontab,它将每天下午3时运行:
0 15 * * * /var/www/project/yii daemon/createhttps://stackoverflow.com/questions/50148807
复制相似问题