在Server中使用swoole_table

   2016-12-23 0
核心提示:背景:对于swoole这样的Server想灵活的实现不同端口间(tcp/websocket/httpd) 的通讯,用swoole自己的table可能更能灵活处理一些逻辑fd的发送,这块简单,不支持搜索,能基本上满足简单业务需求,当然更复杂可以用Redis/Mysql,显然这个是针对物联网的,因为

背景:对于swoole这样的Server想灵活的实现不同端口间(tcp/websocket/httpd) 的通讯,用swoole自己的table可能更能灵活处理一些逻辑fd的发送,这块简单,不支持搜索,能基本上满足简单业务需求,当然更复杂可以用Redis/Mysql,显然这个是针对物联网的,因为这个表大小由自己定,多了就没法再写入了。

使用备注:只有在swoole_server->start()之前创建的table对象才能在子进程中使用

swoole_table构造方法中指定了最大容量,一旦超过此数据容量将无法分配内存导致set操作失败。所以使用swoole_table之前一定要规划好数据容量

<?php                                                                                                         
$table = new swoole_table(1024);
$table->column('fd', swoole_table::TYPE_INT);
$table->column('from_id', swoole_table::TYPE_INT);
$table->column('data', swoole_table::TYPE_STRING, 64);
$table->create();

$serv = new swoole_server('127.0.0.1', 9501);
//将table保存在serv对象上
$serv->table = $table;

$serv->on('receive', function ($serv, $fd, $from_id, $data) {
    $ret = $serv->table->set($fd, array('from_id' => $data, 'fd' => $fd, 'data' => $data));
    $swoole_table_ret = $serv->table->get($fd);
    print_r($swoole_table_ret);
});

$serv->start();

[root@a ~]# telnet 127.0.0.1 9501

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

Connection closed by foreign host.

[root@a ~]# telnet 127.0.0.1 9501

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

jack

php swoole_table.php

Array

(

[fd] => 1

[from_id] => 0

[data] => 0

)

参考:

http://wiki.swoole.com/wiki/page/292.html

http://wiki.swoole.com/wiki/page/259.html

 
标签: Swoole
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
    PHP 使用 Swoole - TaskWorker 实现异步操作 My
    在一般的 Server 程序中都会有一些耗时的任务,比如:发送邮件、聊天服务器发送广播等。如果我们采用同步阻塞的防水去执行这些任务,那么这肯定会非常的慢。Swoole 的 TaskWorker 进程池可以用来执行一些异步的任务,而且不会影响接下来的任务,很适合处理以
    02-09
  • swoole如何使php永久运行 php的swoole扩展
    swoole如何使php永久运行 php的swoole扩展
    有需要学习交流的友人请加入交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的。感谢阅读!​jq.qq.com soole可以通过开启守护进程使PHP永久运行。守护进程化。设置daemonize = 1时,程序将转入后台作为守护进程运行。长时间运行的服务器端程
    02-09
  • 通过 PECL 安装 PHP 扩展(以 CentOS7 中安装 s
    PECL 和 phpize官网文档PHP 有大量的扩展可以使用,比如用于连接数据库的扩展 mysqli,图形库 gd2 等。扩展有两种安装方法:通过 pear install xxx 安装,需要提前在机器上安装 pear,CentOS 下可以通过 yum install php72w-pear 可以安装 PHP7.2 对应的版本
    02-09
  • ysapi:由 Swoole + yaf 实现 socket 服务基础框架
    ysapi:由 Swoole + yaf 实现 socket 服务基础
    ysapi简介 ysapi是一个由 swoole + yaf 实现socket服务基础框架. 由swoole实现socket服务,对外提供API接口, yaf负责api对应的业务逻辑.功能介绍 基于socket提供更快的数据返回 基于swoole多进程task模型,实现多任务并行处理 客户端单次调用,服务端自动拆分任
    02-05 YafSwoole
  • Swoole 2.0 正式版发布,协程特性支持 PHP 7
    Swoole 2.0正式版发布了。2.0版本最大的更新是增加了对协程(Coroutine)的支持。正式版已同时支持PHP5和PHP7。基于Swoole2.0协程PHP开发者可以已同步的方式编写代码,底层自动进行协程调度,转变为异步IO。解决了传统异步编程嵌套回调的问题。与Node.js(ES6
    01-06 Swoole
  • Swoole 2.0 协程的实现原理
    实现原理Swoole2.0基于setjmp、longjmp实现,在进行协程切换时会自动保存Zend VM的内存状态(主要是EG全局内存和vm stack)。示例代码$server = new Swoole\Http\Server('127.0.0.1', 9501, SWOOLE_BASE);#1$server-on('Request', function($request, $respon
    12-23 Swoole
  • Swoole 1.9.1 发布,Bug 修复版本
    PHP的异步、并行、高性能网络通信引擎Swoole 已发布 1.9.1 版本。此版本是一个BUG修复版本,建议用户升级至此版本。主要更新:修复使用addProcess添加用户进程后无法正常shutdown的问题异步读写文件函数Async::writeFile增加FILE_APPEND选项支持异步读写文件
    12-23 Swoole
  • swoole-vue-webim:基于 Vue 和 Swoole 构建的 Web 聊天应用
    swoole-vue-webim:基于 Vue 和 Swoole 构建的
    swoole-vue-webim 这是一个 Web 版的聊天应用,前端基于 Vue 来构建,用 Vuex 来进行状态管理, webpack 构建;服务端通过 Swoole 来实现。基本功能有单聊、群聊、用户状态、消息状态以及通知信息。 如何部署?1.前期准备 需要安装 npm 和 Swoole ,其中还要
    12-01 SwooleVue.js
  • syar:Swoole 实现的 Yar 服务
    为何用swoole来实现 Yar server历史代码使用了yar, 不想过多修改客户端代码提升Yar服务端执行效率学习swoole, yar(在此感谢laruence,rango及swoole开发团队)Requirephp5.4+ext-swoole 1.8.8+ext-msgpack 如果yar使用msgpack编码方式Installcomposer require '
    12-01 Swoole
  • Swoole 1.9 正式版发布,增加多项新特性
    Swoole 1.9 正式版发布了。PHP的异步、并行、高性能网络通信引擎Swoole 已发布 1.9 正式版。新版本增加了多项新特性,修复了多个已知问题。1.9版本是100%向下兼容1.8的,用户可无缝升级。新增 RedisServer 框架Swoole-1.9增加了一个兼容Redis服务器端协议的Se
    11-22 Swoole
点击排行