• 服务端代码
<?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服务端程序的更多相关文章

  1. websocketj--随时随地在Web浏览器中操作你的服务端程序

    0 - 有没有觉得Linux标准终端界面输入输出枯燥无味? 1 - 什么?vmstat命令的输出数据不直观?有没有想过能够可视化该命令的输出? 2 - 尝试过用浏览器操作Windows中的cmd吗? ...

  2. 用nodejs快速实现websocket服务端(带SSL证书生成)

    有不少公司将nodejs的socket.io作为websocket的解决方案,很遗憾的是socket.io是对websocket的封装,并不支持html5原始的websocket协议,微信小程序使用的 ...

  3. asp.net网站作为websocket服务端的应用该如何写

    最近被websocket的一个问题困扰了很久,有一个需求是在web网站中搭建websocket服务.客户端通过网页与服务器建立连接,然后服务器根据ip给客户端网页发送信息. 其实,这个需求并不难,只是 ...

  4. C# WebSocket 服务端示例代码 + HTML5客户端示例代码

    WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System.Linq; using System. ...

  5. 03-案例——多任务版TCP服务端程序开发

    案例——多任务版TCP服务端程序开发   1. 需求     目前我们开发的TCP服务端程序只能服务于一个客户端,如何开发一个多任务版的TCP服务端程序能够服务于多个客户端呢?完成多任务,可以使用线程 ...

  6. node.js服务端程序在Linux上持久运行

    如果要想在服务端部署node.js程序,让其持久化运行,就不能单单使用npm start命令运行,当然了,这样运行是毫无问题的,但是当关闭xshell窗口或者是关闭进程的时候(其实关闭xshell窗口 ...

  7. zabbix3.0.4关于java服务端程序内存溢出的处理

    关于java服务端程序内存溢出的处理 java服务端程序内存溢出会产生jvm.log文件,此时程序会挂掉,无法正常处理业务,需要重启服务 思路: 当存在jvm.log这个文件的时候则触发clean_j ...

  8. 第一个socket服务端程序

    第一个socket服务端程序 #include <stdio.h> #include <stdlib.h> #include <string.h> #include ...

  9. nodejs搭建简单的websocket服务端

    创建websocket服务端使用了nodejs-websocket ,首先要安装nodejs-websocket,在项目的目录下: npm install nodejs-websocket 1.搭建w ...

随机推荐

  1. Linux文件属性之时间戳及文件名知识详解

    ls  -lhi 7.8.9三列是时间(默认是修改时间) modify    修改时间 -----mtime     一般是修改文件内容 change   改变时间----ctime      文件的 ...

  2. poj2299(归并排序求逆序对)

    题目链接:https://vjudge.net/problem/POJ-2299 题意:给定一个序列,每次只能交换邻近的两个元素,问要交换多少次才能使序列按升序排列. 思路:本质就是求逆序对.我们用归 ...

  3. linux 静态库 ar命令用法

    当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量.这里介绍命令ar,用来对库操作. 1.ar基本用法 ar ...

  4. Linux中设置系统时间和时区

    之前公司里有需求要做机器与服务器做时间同步,服务器发送时间戳和时区过来,机器这边根据接收到的时间戳和时区来改时间. 其实很简单,百度上应该也有很多博客有类似的教程,但是这里强调一点,百度上的博客里写的 ...

  5. Hinton等人新研究:如何更好地测量神经网络表示相似性

    Hinton等人新研究:如何更好地测量神经网络表示相似性 2019年05月22日 08:39:15 喜欢打酱油的老鸟 阅读数 177更多 分类专栏: 人工智能   https://www.toutia ...

  6. 【原创】Linux基础之logrotate

    logrotate logrotate ‐ rotates, compresses, and mails system logs logrotate is designed to ease admin ...

  7. Python习题之快乐的数字

    快乐的数字 描述 编写一个算法来确定一个数字是否“快乐”. 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无 ...

  8. 销售订单(SO)-API-给已有的销售订单增加一行

    在已存在的OM订单中增加一物料: PROCEDURE insert_new_so_api(p_return_code OUT VARCHAR2, p_return_msg OUT VARCHAR2) ...

  9. js小功能2:切换

    HTML: <div id="tb"> <ul><li class="on">房产</li><li> ...

  10. kbmMW 5.09.00是个必须升级的版本!

    这几天遇到的几个问题,从5.08.10升级到5.09.00,自然解决了! 所以建议大家都升级到这个版本. 例如我遇到的问题: 1.在线程中使用ClientQuery注意的问题 2.Invalid pr ...