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


1、首先通過 composer 安裝workerman,在thinkphp5完全開發手冊的擴展-》coposer包-》workerman有詳細說明:

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

 2.在項目根目錄創建服務啟動文件 server.php:

<?php

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

 3、在application里創建server模塊,並在server里創建控制器 Worker.php:

<?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類.定義一個每秒鍾執行一次的定時器,在定時器里增加條件判斷,當當前時間等於要執行的時間時,就執行此任務

<?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");
    }

   }

 

 5、啟動服務 php server.php start -d

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM