把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 ...
随机推荐
- TIPTOP之分割split函数方法、getIndexOf、subString、replace、临时表创建;
范例(cnmq001): 原:每次查询都把数据全部查询到临时表后再筛选: 现:查询到临时表的时候,增加可行的筛选条件,再二次筛选临时表的数据,进行优化: 1)临时表创建: PRIVATE FUNCTI ...
- pb datawindow的用法
1. 使DataWindow列只能追加不能修改如何使DataWindow中的数据只能追加新记录而不能修改,利用 Column 的 Protect 属性可以很方便的做到这一点,方法如下:将每一列的 Pr ...
- signalfx的中间件监控指标so cool
signalfx的中间件监控指标so cool www.jianshu.com 对于我们做运维的来说,监控是最基本的东西,不过在初创公司很多计划是跟不上项目架构变化的,项目中会不断加入各种服务和组 ...
- 项目实践 hrm项目的设计过程
人事管理系统的设计过程 一.数据库表和持久化类 1.1 进行需求分析,根据功能模块设计数据库表 1.2 设计持久化实体 面向对象分析,即根据系统需求提取出应用中的对象,将这些对象抽象成类,再抽 ...
- java——包装类中的equals方法
基本数据类型包装类中的equals方法用于比对相同包装类中的值是否相等,如果两者比较的包装类类型不同则返回false: Byte public boolean equals(Object obj) { ...
- C#进阶之WebAPI(一)
最近出去面试,被问到关于WebAPI的知识,因为项目中没有单独写过WebAPI,使用的时候是和mvc结合在一起使用的,所以,在我的印象中WebAPI和mvc是差不多的,这种答案当然不能让人满意了,于是 ...
- Android中如何判断内存卡是否存在
if (Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { /* 得到SD卡得路 ...
- centos7安装配置LVS+keepalived高可用
Centos7-Lvs+Keepalived架构 LVS+Keepalived 介绍 1 . LVS LVS 是一个开源的软件,可以实现 LINUX 平台下的简单负载均衡. LVS 是 Linux ...
- sql的关键字
整理一下sql的关键字,一直都在用,只是很少去整理,所以今天简单整理一下,主要是整理CRUD的一些关键字. 写在前面:sql 不区分大小写 select 简单查询语句 select columnNam ...
- SpringMVC----视图层框架
Spring Web模型-视图-控制器(MVC)框架是围绕DispatcherServlet设计的,DispatcherServlet将接收的请求分派给应用程序.SpringMVC具有配置处理程序映射 ...