在Server中使用swoole_table 不指定

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

使用备注:只有在swoole_server->start()之前创建的table对象才能在子进程中使用
swoole_table构造方法中指定了最大容量,一旦超过此数据容量将无法分配内存导致set操作失败。所以使用swoole_table之前一定要规划好数据容量
第二:set/get/del 是自带行锁,所以不需要调用lock加锁,这点好处不言自明。


[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
php swoole_table.php  
Array
(
    [fd] => 1
    [from_id] => 0
    [data] => 0
)
Array
(
    [fd] => 56
    [from_id] => 777
    [data] => 8899
)

其它常用到的相关操作函数:
swoole_table->exist
检查table中是否存在某一个key。

bool swoole_table->exist(string $key);
存在返回true
不存在返回false

swoole_table->del
删除数据

bool swoole_table->del(string $key)
$key对应的数据不存在,将返回false
成功删除返回true

参考:
http://wiki.swoole.com/wiki/page/292.html
http://wiki.swoole.com/wiki/page/259.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/9115/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2016-12-18 22:18
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]