国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman,如何動態(tài)設置定時任務

evilk

需求:
根據(jù)用戶的設置,比如每天凌晨3點,執(zhí)行一個定時任務
這個定時任務,執(zhí)行的時間,是根據(jù)用戶的設置來的\

最關鍵的問題是,這個設置可能會經(jīng)常變化
可能今天用戶設置為每天凌晨3點執(zhí)行
可能明天用戶設置為每天凌晨7點執(zhí)行

這種情況,有沒有可行的思路或者方案呢?

4232 9 0
9個回答

nitron

設置一個定時任務每分鐘跑一遍用來執(zhí)行設置用戶的定時任務

  • Tinywan 2022-03-31

    這個有什么好的方案嗎?想寫個插件

  • nitron 2022-03-31

    其實crontab如果不是那種要求精確到秒執(zhí)行的,我更傾向走命令行,思路大概就是兩種:

    1.一個MainCronTask在命令行下1分鐘運行一次,邏輯就是檢測是否有剛好這個時間需要執(zhí)行的計劃任務SubCronTask,有則執(zhí)行
    2.還是MainCronTask在命令行下1分鐘運行一次,邏輯就是執(zhí)行所有的計劃任務SubCronTask,至于實際是否執(zhí)行,有具體計劃任務自身判斷

    但是要注意處理前一個計劃任務執(zhí)行時間過長,導致前一個計劃任務(不管是Main還是Sub)沒有執(zhí)行完,又到了下一個執(zhí)行時間的問題

  • Tinywan 2022-03-31

    看了一下,不好寫

  • nitron 2022-03-31

    獨立跑命令行,可以規(guī)避掉因為WM掛掉而導致無法執(zhí)行計劃任務的問題

  • Tinywan 2022-03-31

    意外情況太多了

yzh52521

放數(shù)據(jù)庫
掃描數(shù)據(jù)庫里的任務來執(zhí)行

  • 暫無評論
li914

做一個專門單個定時任務進程,當有定時任務時,推送到定時任務進程上,然后在定時任務進程上 啟動 定時任務 ,并且保存 定時任務對象,當需要關閉定時任務時,推送到 定時任務進程 在進程上拿 定時任務對象 進行關閉。 感覺這樣子應該可以,沒有實際操作過

  • 暫無評論
yzh52521

我本地已經(jīng)測試的差不多了,有人需要么?

  • liziyu 2022-04-02

    ??

  • weywey 2022-10-20

    大,數(shù)據(jù)庫需要手動創(chuàng)建嗎,還是composer直接安裝

yzh52521

插件已經(jīng)寫好了

composer require yzh52521/webman-task

歡迎大家測試

  • ala3246875 2022-04-03

    是數(shù)據(jù)庫控制的嗎??

  • yzh52521 2022-04-03

    必須數(shù)據(jù)庫控制啊

  • xiaoyuan136 2022-04-12

    webman啟動后運行有報錯是哪里還需要設置嗎,ErrorException: stream_socket_client(): unable to connect to tcp://0.0.0.0:2345 (在其上下文中,該請求的地址無效。
    ) in D:\www\webman\vendor\yzh52521\webman-task\src\Client.php:14

  • yzh52521 2022-04-12

    plugin.yzh52521.task.cron_task 進程啟動了么

  • xiaoyuan136 2022-04-12

    啟動了webman,默認端口是8787,cron_task好像沒有啟動,沒有這個文件

  • 智佳思遠 2022-04-12

    unable to connect to tcp://0.0.0.0:2345,看起來是ip地址不對,應該是127.0.0.1 才對吧

  • yzh52521 2022-04-12

    那你修改下 plugin.yzh52521.task.app.task.listen 為127.0.0.1:2345

  • xiaoyuan136 2022-04-12

    不行的,剛開始我以為也是這個問題,后面換了ip也是不對

  • yzh52521 2022-04-12

    cron_task進程就沒有啟動起來

  • yzh52521 2022-04-12

    安裝 think-orm ,crontab 這些插件了么?

  • xiaoyuan136 2022-04-12

    1.think-orm已安裝,少安裝了crontab(后面已安裝)
    2.ip地址改成了127.0.0.1:8787(沒有報ip錯誤了)
    現(xiàn)在日志里的錯誤是:default.ERROR: json_decode() expects parameter 1 to be string, bool given {"exception":"TypeError: json_decode() expects parameter 1 to be string, bool given in D:\www\webman\vendor\yzh52521\webman-task\src\Client.php:33

  • yzh52521 2022-04-12

    你怎么調(diào)用的 ?

  • xiaoyuan136 2022-04-12

    <?php
    namespace app\controller;

    use support\Request;
    use support\log;
    use think\facade\Db;
    use Workerman\Crontab\Crontab;
    class Test
    {
    public function add(Request $request)
    {
    return json(Db::name('users')->select()->toArray());
    }
    //定時任務
    public function crontab()
    {
    $crontab = new Crontab('1 ', function(){
    echo date('Y-m-d H:i:s')."\n";
    });
    Log::info('log test123',['AAA'=>123,'BB'=>222]);
    /
    $param = [
    'method' => 'crontabIndex',//計劃任務列表
    'args' => ['limit' => 10, 'page' => 1]//參數(shù)
    ];/
    $param = [
    'method' => 'crontabCreate',//計劃任務列表
    'args' => [
    'title' => '輸出webman版本',
    'frequency' => '
    /30 *',
    'shell' => 'php webman version',
    'remark' => '每30秒執(zhí)行',
    'sort' => 0,
    'status' => 1
    ]//參數(shù)
    ];
    $result = \yzh52521\Task\Client::instance()->request($param);
    print_r($result);
    //return json($result);
    //return response($result);
    }
    }

  • yzh52521 2022-04-12

    列表

    public function cron_index()
        {
            $request = [
                'method' => 'crontabIndex',
                'args'   => ['limit' => 10, 'page' => 1]
            ];
            $result  = \yzh52521\Task\Client::instance()->request($request);
            return json($result);
        }
    

    添加

    public function cron_create()
        {
            $request = [
                'method' => 'crontabCreate',
                'args'   => [
                    'title'     => '輸出 webman 版本',
                    'frequency' => '*/20 * * * * *',
                    'shell'     => 'php webman version',
                    'status'    => 1,
                    'remark'    => '20秒',
                ]
            ];
            $result  = \yzh52521\Task\Client::instance()->request($request);
            return json($result);
        }
  • xiaoyuan136 2022-04-12

    我調(diào)用的寫法沒問題,復制你的也是一樣。。你的webman啟動后能看到任務進程嗎

  • yzh52521 2022-04-12

    可以啊 加我qq好友我?guī)湍憧纯矗?/p>

  • xiaoyuan136 2022-04-12

    好,你qq多少我加你

  • yzh52521 2022-04-12

    QQ:396751927

  • xianrenqh 2022-05-27

    TypeError: json_decode() expects parameter 1 to be string, bool given in E:\www\1043huicmf_webman\vendor\yzh52521\webman-task\src\Client.php:36
    Stack trace:

    0 E:\www\1043huicmf_webman\vendor\yzh52521\webman-task\src\Client.php(36): json_decode(false)

    1 E:\www\1043huicmf_webman\app\admin\controller\system\CrontabController.php(50): yzh52521\Task\Client->request(Array)

    2 E:\www\1043huicmf_webman\vendor\workerman\webman-framework\src\App.php(251): app\admin\controller\system\CrontabController->add(Array)

    3 E:\www\1043huicmf_webman\app\admin\middleware\SystemLog.php(46): Webman\App::Webman{closure}(Object(support\Request))

    4 E:\www\1043huicmf_webman\vendor\workerman\webman-framework\src\App.php(245): app\admin\middleware\SystemLog->process(Object(support\Request), Object(Closure))

    5 E:\www\1043huicmf_webman\app\admin\middleware\AuthCheckAccess.php(75): Webman\App::Webman{closure}(Object(support\Request))

    6 E:\www\1043huicmf_webman\vendor\workerman\webman-framework\src\App.php(245): app\admin\middleware\AuthCheckAccess->process(Object(support\Request), Object(Closure))

    7 E:\www\1043huicmf_webman\app\admin\middleware\AccessControl.php(21): Webman\App::Webman{closure}(Object(support\Request))

    8 E:\www\1043huicmf_webman\vendor\workerman\webman-framework\src\App.php(245): app\admin\middleware\AccessControl->process(Object(support\Request), Object(Closure))

    9 E:\www\1043huicmf_webman\vendor\webman\action-hook\src\ActionHook.php(30): Webman\App::Webman{closure}(Object(support\Request))

    10 E:\www\1043huicmf_webman\vendor\workerman\webman-framework\src\App.php(245): Webman\ActionHook\ActionHook->process(Object(support\Request), Object(Closure))

    11 E:\www\1043huicmf_webman\app\middleware\AccessControl.php(21): Webman\App::Webman{closure}(Object(support\Request))

    12 E:\www\1043huicmf_webman\vendor\workerman\webman-framework\src\App.php(245): app\middleware\AccessControl->process(Object(support\Request), Object(Closure))

    13 E:\www\1043huicmf_webman\vendor\workerman\webman-framework\src\App.php(330): Webman\App::Webman{closure}(Object(support\Request))

    14 E:\www\1043huicmf_webman\vendor\workerman\webman-framework\src\App.php(147): Webman\App::findRoute(Object(Workerman\Connection\TcpConnection), '/admin/system/c...', 'GET/admin/syste...', Object(support\Request))

    15 E:\www\1043huicmf_webman\vendor\workerman\workerman\Connection\TcpConnection.php(638): Webman\App->onMessage(Object(Workerman\Connection\TcpConnection), Object(support\Request))

    16 E:\www\1043huicmf_webman\vendor\workerman\workerman\Events\Select.php(295): Workerman\Connection\TcpConnection->baseRead(Resource id #338)

    17 E:\www\1043huicmf_webman\vendor\workerman\workerman\Worker.php(2435): Workerman\Events\Select->loop()

    18 E:\www\1043huicmf_webman\vendor\workerman\workerman\Worker.php(1430): Workerman\Worker->run()

    19 E:\www\1043huicmf_webman\vendor\workerman\workerman\Worker.php(1373): Workerman\Worker::forkWorkersForWindows()

    20 E:\www\1043huicmf_webman\vendor\workerman\workerman\Worker.php(549): Workerman\Worker::forkWorkers()

    21 E:\www\1043huicmf_webman\start.php(112): Workerman\Worker::runAll()

    22 {main}

xianrenqh

@yzh52521
報錯


  • yzh52521 2022-05-27

    確實一個字段 frequency

  • xianrenqh 2022-05-27

    大佬怎么改

  • yzh52521 2022-05-27
    CREATE TABLE `system_crontab` (
      `id` int unsigned NOT NULL AUTO_INCREMENT,
      `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任務標題',
      `type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '任務類型 (1 command, 2 class, 3 url, 4 eval)',
      `rule` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任務執(zhí)行表達式',
      `target` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '調(diào)用任務字符串',
      `running_times` int NOT NULL DEFAULT '0' COMMENT '已運行次數(shù)',
      `last_running_time` int NOT NULL DEFAULT '0' COMMENT '上次運行時間',
      `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '備注',
      `sort` int NOT NULL DEFAULT '0' COMMENT '排序,越大越前',
      `status` tinyint NOT NULL DEFAULT '0' COMMENT '任務狀態(tài)狀態(tài)[0:禁用;1啟用]',
      `create_time` int NOT NULL DEFAULT '0' COMMENT '創(chuàng)建時間',
      `update_time` int NOT NULL DEFAULT '0' COMMENT '更新時間',
      `singleton` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否單次執(zhí)行 (0 是 1 不是)',
      `parameter` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任務調(diào)用參數(shù)',
      PRIMARY KEY (`id`) USING BTREE,
      KEY `title` (`title`) USING BTREE,
      KEY `create_time` (`create_time`) USING BTREE,
      KEY `status` (`status`) USING BTREE,
      KEY `type` (`type`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='定時器任務表';
    CREATE TABLE `system_crontab_log` (
      `id` bigint unsigned NOT NULL AUTO_INCREMENT,
      `crontab_id` bigint unsigned NOT NULL COMMENT '任務id',
      `target` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '任務調(diào)用目標字符串',
      `parameter` varchar(500) COLLATE utf8mb4_general_ci NOT NULL COMMENT '任務調(diào)用參數(shù)',
      `exception` text COLLATE utf8mb4_general_ci NOT NULL COMMENT '異常信息輸出',
      `return_code` tinyint(1) NOT NULL DEFAULT '0' COMMENT '執(zhí)行返回狀態(tài)[0成功; 1失敗]',
      `running_time` varchar(10) COLLATE utf8mb4_general_ci NOT NULL COMMENT '執(zhí)行所用時間',
      `create_time` int NOT NULL DEFAULT '0' COMMENT '創(chuàng)建時間',
      `update_time` int NOT NULL DEFAULT '0' COMMENT '更新時間',
      PRIMARY KEY (`id`) USING BTREE,
      KEY `create_time` (`create_time`) USING BTREE,
      KEY `crontab_id` (`crontab_id`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=392 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='定時器任務執(zhí)行日志表';
    

    你對照下數(shù)據(jù)庫是不是少字段

  • xianrenqh 2022-05-27

    對比后,沒有少字段

  • yzh52521 2022-05-27

    我知道了, http://www.wtbis.cn/plugin/42 你看下 文檔

    $param = [
                'method' => 'crontabCreate',
                'args'   => [
                    'title'     => '輸出 webman 版本',
                    'type' =>1,
                    'rule' => '*/30 * * * * *',
                    'target'     => 'php webman version',
                    'status'    => 1,
                    'remark'    => '每30秒執(zhí)行',
                ]
            ];

    最新版 字段有變動

  • xianrenqh 2022-05-27

    這次可以了

xianrenqh

@yzh52521
代碼有個小問題:

  • xianrenqh 2022-05-27

    因composer安裝后創(chuàng)建的數(shù)據(jù)可靠 parameter字段是不能為空且不能為null的,而代碼中 默認為空的時候返回的是null,這樣在寫入數(shù)據(jù)庫的時候一直會報錯無法寫入成功

  • yzh52521 2022-05-27

    感謝反饋 已修復

mayibanjia

第三方項目有一個你可以參考

  • 暫無評論
owenzhang
  • owenzhang 2022-05-31

    new Crontab('/1 ', function () { '/1 '這個你可以寫入redis,然后從redis讀取,動態(tài)修改

  • 晚安。 2022-08-16

    打不開你的文章

  • owenzhang 2022-08-17

    現(xiàn)在呢?

  • 晚安。 2022-08-17

    new Crontab('/1 ', function () { '/1 '這個你可以寫入redis,然后從redis讀取,動態(tài)修改
    這個redis里面值改了 要重啟服務才會生效把

  • owenzhang 2022-08-17

    你可以試下,我沒弄過,我想值改了,不用重啟也可以,,你試下,告訴我結(jié)果,我也備注記錄下

  • 晚安。 2022-08-17

    我試了,值改了,沒有生效,重啟之后才會生效

  • owenzhang 2022-08-18

    好的

  • 晚安。 2022-08-19

    可以修改redis里面值后,然后代碼里面執(zhí)行重啟webman服務嗎,讓其修改生效

  • owenzhang 2022-08-20

    代碼里面執(zhí)行重啟webman服務,可以試下

  • 晚安。 2022-08-20

    代碼里面怎么重啟webman

  • liziyu 2022-08-20

    shell_exec("php start.php restart");

    哈哈。

  • owenzhang 2022-08-20

    你還是參考這個插件吧 composer require yzh52521/webman-task

年代過于久遠,無法發(fā)表回答
??