thinkphp5使用workerman的定時器定時任務在某一個時間執行

一、首先經過 composer 安裝workerman,在thinkphp5徹底開發手冊的擴展-》coposer包-》workerman有詳細說明:php

#在項目根目錄執行如下指令
composer require topthink/think-worker

 2.在項目根目錄建立服務啓動文件 server.php:thinkphp

<?php

define('APP_PATH', __DIR__ . '/application/');
define("BIND_MODULE", "server/Worker");
// 加載框架引導文件
require __DIR__ . '/thinkphp/start.php';

 三、在application裏建立server模塊,並在server裏建立控制器 Worker.php:app

<?php
namespace app\server\controller;

use think\worker\Server;

class Worker extends Server
{
    protected $processes=1;
    public function onWorkerStart($work)
    {
        $handle=new Index();
        $handle->add_timer();
    }
}

 

4.建立Index.php類.定義一個每秒鐘執行一次的定時器,在定時器裏增長條件判斷,噹噹前時間等於要執行的時間時,就執行此任務composer

<?php
namespace app\server\controller;

use Workerman\Lib\Timer;

class Index
{

    public function add_timer(){
        Timer::add(1, array($this, 'index'), array(), true);
    }


    public function index(){

     //天天0點執行任務
    if(time()/86400===0){
        echo date("Y-m-d H:i:s");
    }
    //天天8點執行任務
    if(time()/86400===28800){
        echo date("Y-m-d H:i:s");
    }

   }

 

 五、啓動服務 php server.php start -d框架

相關文章
相關標籤/搜索