Table
swoole_table一个基于共享内存和锁实现的超高性能,并发数据结构。用于解决多进程/多线程数据共享和同步加锁问题。
最新版本已移除
lock
和unlock
方法,请使用Swoole\Lock
来实现数据同步
swoole_table的优势
- 性能强悍,单线程每秒可读写
200万
次 - 应用代码无需加锁,
swoole_table
内置行锁自旋锁,所有操作均是多线程/多进程安全。用户层完全不需要考虑数据同步问题。 - 支持多进程,
swoole_table
可以用于多进程之间共享数据 - 使用行锁,而不是全局锁,仅当
2
个进程在同一CPU
时间,并发读取同一条数据才会进行发生抢锁
swoole_table
不受PHP
的memory_limit
控制swoole_table
在1.7.5
以上版本可用
遍历Table
swoole_table类实现了迭代器和Countable接口,可以使用foreach进行遍历,使用count计算当前行数。
遍历Table 依赖pcre 如果发现无法遍历table,检查机器是否安装pcre-devel
foreach($table as $row)
{
var_dump($row);
}
echo count($table);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?php /** * Created by PhpStorm. * User: baidu * Date: 18/3/18 * Time: 下午10:00 */ // 创建内存表 $table = new swoole_table(1024); // 内存表增加一列 创建字段 $table ->column( 'id' , $table ::TYPE_INT, 4); $table ->column( 'name' , $table ::TYPE_STRING, 64); $table ->column( 'age' , $table ::TYPE_INT, 3); $table ->create(); //行数据 $table ->set( 'singwa_imooc' , [ 'id' => 1, 'name' => 'singwa' , 'age' => 30]); // 另外一种方案 $table [ 'singwa_imooc_2' ] = [ 'id' => 2, 'name' => 'singwa2' , 'age' => 31, ]; $table ->decr( 'singwa_imooc_2' , 'age' , 2); print_r( $table [ 'singwa_imooc_2' ]); echo "delete start:" .PHP_EOL; $table ->del( 'singwa_imooc_2' ); print_r( $table [ 'singwa_imooc_2' ]); |
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/9022208.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能