首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Scheduler在windows上运行控制台应用程序

问使用Scheduler在windows上运行控制台应用程序
EN

Stack Overflow用户
提问于 2018-05-03 07:03:03
回答 2查看 1.8K关注 0票数 1

我正在研究yii2。我有一个创建功能,我想运行在后台后,每24小时。

代码语言:javascript
复制
 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中创建了一个控制器

代码语言:javascript
复制
namespace console\controllers;

use yii\console\Controller;

class TestController extends Controller {

public function actionIndex() {
    echo "cron service runnning";
}}

现在,为了测试它,我遵循了这个链接并使用cmd创建了一个具有以下参数的运行服务

​

​

现在,按照建议,我已经尝试了每一步。.bat文件包含

代码语言:javascript
复制
@Echo off
title My Cron Job
:: See title at the top
php E:\xampp\htdocs\inventory-web\yii test
pause

保存文件并将其添加到任务调度程序之后。我试着从这个界面运行它。我确实看到了一个cmd的开口并显示了信息。

我该怎么做呢?任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

代码语言:javascript
复制
@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 操作系统,所以如果没有办公室的测试,就不能发布答案。

票数 3
EN

Stack Overflow用户

发布于 2018-05-03 07:20:50

在我看来,你是在找克隆约伯。

您必须创建一个控制台cronjob,然后将其添加到服务器上的crontab中。上面的链接提供了一个关于如何为Yii2设置这个链接的wiki。

例如crontab,它将每天下午3时运行:

代码语言:javascript
复制
0 15 * * * /var/www/project/yii daemon/create
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50148807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档