把task加入websocket服务端程序
- 服务端代码
<?php
//task任务要实现两个方法onfinish ontask
//还要设置worker_num
date_default_timezone_set("PRC"); //设置为本地时间 class taskserver
{
CONST host ="0.0.0.0";
CONST port =;
public $sw = null;
public function __construct()
{
$this->sw = new swoole_websocket_server(taskserver::host,taskserver::port);
$this->sw->set([
'worker_num'=>,
'task_worker_num'=>
]); $this->sw->on('open',[$this,'onopen']);
$this->sw->on('message',[$this,'onmessage']);
$this->sw->on('task',[$this,'ontask']);
$this->sw->on('finish',[$this,'onfinish']);
$this->sw->on('close',[$this,'onclose']);
$this->sw->start();
} public function onopen($serv,$request)
{
echo "来自{$request->fd}的连接已经建立\n";
echo "cpu数量:".SWOOLE_CPU_NUM()."\n";
} public function onmessage($serv,$frament)
{
echo "finish标识符---{$frament->finish}--opcode:{$frament->opcode}---fd:标识符{$frament->fd}\n";
//加入这里有个耗费时间的操作
//这个数组没什么实际意义,只不过是模拟一个任务
$mytask=array([
"name"=>'陈培昌',
'age'=>
]);
$serv->task($mytask);//把任务头送进进程池,$mytask必须是可序列化的数据类型
$serv->push($frament->fd,"回馈来自客户端{$frament->fd}的数据{$frament->data}---时间是".date("Y-m-d H:i:s")."\n");
} public function ontask($serv,$task_id,$worker_id,$mytask)
{
//这里是真正执行阻塞任务的地方
//纯属无聊,打印看看是这个任务---也就是$mytask到底什么货色
print_r($mytask);
//这段模拟阻塞/耗时操作
sleep();
//返回处理结果
return "想去找小烤肠练巴西柔术"; } public function onfinish($serv,$task_id,$data)
{
echo "{$task_id}就绪,并返回结果----{$data}";
}
public function onclose($serv,$fd)
{
echo "句柄:{$fd}关闭连接\n";
}
}
$cpc = new taskserver();
- 运行结果
打印:
来自1的连接已经建立
cpu数量:4
finish标识符---1--opcode:1---fd:标识符1
Array
(
[0] => Array
(
[name] => 陈培昌
[age] => 22
)
)
--------------------------------10秒后又打印
0就绪,并返回结果----想去找小烤肠练巴西柔术
把task加入websocket服务端程序的更多相关文章
- websocketj--随时随地在Web浏览器中操作你的服务端程序
0 - 有没有觉得Linux标准终端界面输入输出枯燥无味? 1 - 什么?vmstat命令的输出数据不直观?有没有想过能够可视化该命令的输出? 2 - 尝试过用浏览器操作Windows中的cmd吗? ...
- 用nodejs快速实现websocket服务端(带SSL证书生成)
有不少公司将nodejs的socket.io作为websocket的解决方案,很遗憾的是socket.io是对websocket的封装,并不支持html5原始的websocket协议,微信小程序使用的 ...
- asp.net网站作为websocket服务端的应用该如何写
最近被websocket的一个问题困扰了很久,有一个需求是在web网站中搭建websocket服务.客户端通过网页与服务器建立连接,然后服务器根据ip给客户端网页发送信息. 其实,这个需求并不难,只是 ...
- C# WebSocket 服务端示例代码 + HTML5客户端示例代码
WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System.Linq; using System. ...
- 03-案例——多任务版TCP服务端程序开发
案例——多任务版TCP服务端程序开发 1. 需求 目前我们开发的TCP服务端程序只能服务于一个客户端,如何开发一个多任务版的TCP服务端程序能够服务于多个客户端呢?完成多任务,可以使用线程 ...
- node.js服务端程序在Linux上持久运行
如果要想在服务端部署node.js程序,让其持久化运行,就不能单单使用npm start命令运行,当然了,这样运行是毫无问题的,但是当关闭xshell窗口或者是关闭进程的时候(其实关闭xshell窗口 ...
- zabbix3.0.4关于java服务端程序内存溢出的处理
关于java服务端程序内存溢出的处理 java服务端程序内存溢出会产生jvm.log文件,此时程序会挂掉,无法正常处理业务,需要重启服务 思路: 当存在jvm.log这个文件的时候则触发clean_j ...
- 第一个socket服务端程序
第一个socket服务端程序 #include <stdio.h> #include <stdlib.h> #include <string.h> #include ...
- nodejs搭建简单的websocket服务端
创建websocket服务端使用了nodejs-websocket ,首先要安装nodejs-websocket,在项目的目录下: npm install nodejs-websocket 1.搭建w ...
随机推荐
- VIM 介绍
gedit a.txt 是一个图形界面的文本编辑器. 需要安装图形界面才会有. nano a.txt 也是一样的 vi 是一种文本界面的编辑器. vim 是 vimsual interfa ...
- C语言基础练习——最大值及其位置(二维数组)
C语言基础练习——最大值及其位置(二维数组) 时间限制: 1 Sec 内存限制: 10 MB 题目描述 有一个n×m的矩阵,要求编程序求出: 每行元素的最大值,以及其所在的行号和列号.求出所有元素的 ...
- Rsync快速入门实例(转)
三种主要数据传输方式 单主机本地目录间数据传输(类似cp) Local: rsync [OPTION...] SRC... [DEST] 借助rcp,ssh等通道来传输数据(类似scp) Access ...
- Django初步完成:登录、注册、退出
python环境:python2.7 开发工具:pycharm 项目名称:mysite5 app名称:online settings:映射app路径 INSTALLED_APPS = [ 'djang ...
- python自带queue
from queue import Queue # 线程安全队列 def thread_queue(): q = Queue(3) # 这个队列最多进多少东西 q.put('a') q.put('b' ...
- go 表单
package main import ( "fmt" "io" "net/http" ) const form = `<html&g ...
- 牛客 132C 简单瞎搞题 (bitset)
大意: 给定序列$a$的第$i$个元素的取值范围$[L_i,R_i]$, 求$a$的平方和的种类数. 用bitset优化, 复杂度$O(\frac{n^5}{\omega})$ #include &l ...
- C# 常用类库说明
Array类 用括号声明数组是C#中使用Array类的记号.在后台使用C#语法,会创建一个派生于抽象基类Array的新类.这样,就可以使用Array类为每个C#数组定义的方法和属性了. Array类实 ...
- Navicat连接CentOS7中的MariaDB
Step 1:首先登录数据库设置开启远程连接 mysql -u root -p Step 2:使用改表法实现远程连接 use mysql; update user set host = '%' whe ...
- Ruby 参考教程
Ruby 参考教程 https://www.ruby-lang.org/zh_cn/documentation/ http://ruby-doc.org/docs/ https://ruby-chin ...