Swoole内存-table详解

Posted willem_chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swoole内存-table详解相关的知识,希望对你有一定的参考价值。

Swoole内存-table详解

前言

高性能共享内存 Table

由于 php 语言不支持多线程,因此 Swoole 使用多进程模式,在多进程模式下存在进程内存隔离,在工作进程内修改 global 全局变量和超全局变量时,在其他进程是无效的。

创建内存表

<?php
//创建内存表(1204行)
$table = new swoole_table(1204);

//内存表增加一行(创建字段)
$table->column('id',$table::TYPE_INT,8);
$table->column('name',$table::TYPE_STRING,64);
$table->column('age',$table::TYPE_INT,3);
$table->create();

/*
新增一行内容
第一个参数是key,第二个参数内容
*/
$table->set('willem_swoole',['id'=>1,'name'=>'willem','age'=>29]);

//测试
print_r($table->get('willem_swoole'));
[root@bogon swoole]# php swoole_table.php 
Array
(
    [id] => 1
    [name] => willem
    [age] => 29
)

增删查操作

<?php
//创建内存表(1204行)
$table = new swoole_table(1204);
//内存表增加一行(创建字段)
$table->column('id',$table::TYPE_INT,8);
$table->column('name',$table::TYPE_STRING,64);
$table->column('age',$table::TYPE_INT,3);
$table->create();

/*
新增一行内容
第一个参数是key,第二个参数内容
*/
$table->set('willem_swoole',['id'=>1,'name'=>'willem','age'=>29]);
//另一种方案
$table['willem_swoole2']=[
    'id'=>2,
    'name'=>'willem2',
    'age'=>29,
];
//第一种
// print_r($table->get('willem_swoole2'));

/*运行
//第二种
print_r($table['willem_swoole2']);

[root@localhost memory]# php table.php 
Swoole\\Table\\Row Object
(
    [key] => willem_swoole2
    [value] => Array
        (
            [id] => 2
            [name] => willem2
            [age] => 29
        )

)
[root@localhost memory]# 

//操作字段
$table->incr('willem_swoole2','age',2);//加2
print_r($table['willem_swoole2']);

[root@localhost memory]# php table.php 
Swoole\\Table\\Row Object
(
    [key] => willem_swoole2
    [value] => Array
        (
            [id] => 2
            [name] => willem2
            [age] => 31
        )

)

$table->decr('willem_swoole2','age',2);//减2


//删除操作
$table->decr('willem_swoole2','age',2);//加2
print_r($table['willem_swoole2']);
echo "delete start:".PHP_EOL;
$table->del('willem_swoole2');
print_r($table['willem_swoole2']);

[root@localhost memory]# php table.php 
Swoole\\Table\\Row Object
(
    [key] => willem_swoole2
    [value] => Array
        (
            [id] => 2
            [name] => willem2
            [age] => 27
        )

)
delete start:
Swoole\\Table\\Row Object
(
    [key] => willem_swoole2
    [value] => Array
        (
        )

)
[root@localhost memory]# 

*/
//删除操作
$table->decr('willem_swoole2','age',2);//加2
print_r($table['willem_swoole2']);
echo "delete start:".PHP_EOL;
$table->del('willem_swoole2');
print_r($table['willem_swoole2']);

以上是关于Swoole内存-table详解的主要内容,如果未能解决你的问题,请参考以下文章

swoole之内存

Swoole 内存操作(Table)

swoole table

swoole和workerman哪个更易开发

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段

SWOOLE之广播消息实现