TP6 worlerman定时任务

TP6 worlerman

 TP6 worlerman定时任务

 

 

 TP6 worlerman定时任务

 

以下操作我都是在PHP Composer操作

第一步:安装

composer require topthink/think-worker

项目根目录config文件夹增加

worker.php

worker_server.php

第二步:修改相关配置

修改worker_server.php文件:

‘worker_class’ = ‘app\admin\controller\Dingshi’;

这里的路径要全我这里项目配置了多应用模式,默认的tp6是单应用模式,具体查看tp6官方文档

 TP6 worlerman定时任务

 

 

第三步:Dingshi.php代码

<?php

declare(strict_types=1);

namespace app\admin\controller;

use think\Request;

use Workerman\Lib\Timer;

use think\worker\Server;

class Dingshi extends Server

{

protected $socket = 'websocket://0.0.0.0:2346';

public function __construct()

{

parent::__construct();

$this->onMessage();

// 或者这样调用

$this->worker->onWorkerStart = function($worker)

{

echo "Worker starting...\n";

Timer::add(10, array($this, 'index'), array(), true);

};

}

/**

* 收到信息

* @param $connection

* @param $data

*/

public function onMessage()

{

$this->worker->onMessage = function($connection, $data)

{

$connection->send($data."123");

};

}

/**

* 显示资源列表

*

* @return \think\Response

*/

public function index()

{

file_put_contents('a.log',date('Y-m-d H:i:s',time()).'执行了一次定时任务。'.PHP_EOL,FILE_APPEND);

}

}

第四步:开启workerman服务

php think worker:server

运行效果如下:

Worker starting... 这个就是Dingshi.php 21行数据

关闭服务是ctrl+C 使用过程中不要关闭或者退出

 TP6 worlerman定时任务

 

 

第五步:测试通信

打开网页:http://localhost:2346

运行效果如下:

 TP6 worlerman定时任务

 

 

我用的是谷歌 F12在console里面输入

ws = new WebSocket("ws://127.0.0.1:2346");

ws.onopen = function() {

ws.send('admin');

};

ws.onmessage = function(e) {

alert("收到服务端的消息:" + e.data);

};

 TP6 worlerman定时任务

 

 

这个时候页面会弹出 'admin123' 这个时候说明通信成功了,admin123在Dingshi.php 34行

第六步:查看定时任务效果

Dingshi.php 22行

Timer::add(10, array($this, 'index'), array(), true);

这里每10秒会执行下面的index方法

file_put_contents('a.log',date('Y-m-d H:i:s',time()).'执行了一次定时任务。'.PHP_EOL,FILE_APPEND);

这个是在网页根目录a.log文件写数据效果如下

 TP6 worlerman定时任务

 

上一篇:iOS开发数据库篇—SQLite的应用


下一篇:TP6.0从0到1完整构建高并发电商服务系统*完整