1.首先通過 composer 安裝:(根據自己的目前使用的thinkphp及支持的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.在server模塊裏創建Index.php類定義一個每秒鐘執行一次的定時器,(執行時間根據自己的業務需求來設置)
<?php
namespace app\server\controller;
use Workerman\Lib\Timer;
class Index
{
public function add_timer(){
Timer::add(30, array($this, 'index'), array(), true);
}
public function index(){
$orders=db('order')->select();//30分鐘未支付的訂單自動取消
foreach ($orders as $k => $v) {
db('order')->where('id',$v['id'])->setField('ispay',0);
}
}
}
定時器的參數說明可以去文檔裏查看:http://doc.workerman.net/315179
命令行運行(windows用戶用 cmd命令行)
5、啓動服務 php server.php start -d 這裏是守護進程啓動,當你退出終端的時候,進程依然在執行