<?php declare(strict_types=1); ini_set('display_errors', 'On'); ini_set('memory_limit', '-1'); error_reporting(-1); set_time_limit(0); PHP_SAPI !== 'cli' && exit('脚本只能在命令行执行'); // 参数为表格的最大行数,数值必须是2的N次方,否则底层会自动调整为接近的数字,且若小于1024则强制调整1024 // 提醒:最大行数和实际可存储行数是正相关但不完全一致,如本示例设置最大行数为1024,但实际最多只能存463行。 // 警告:必须根据流量和硬件情况设置参数,不能盲目设大,否则会造成内存耗尽而死机。 $table = new Swoole\Table(2 ** 10); // 提示:2**10 = 2^10 = 1024 // 定义表的结构 $table->column('uid', Swoole\Table::TYPE_INT); $table->column('name', Swoole\Table::TYPE_STRING, 64); // 第三个参数为字符串长度,设置行数据时超过指定数值则会自动截断 $table->column('gender', Swoole\Table::TYPE_STRING, 8); // 第三个参数为字符串长度,设置行数据时超过指定数值则会自动截断 $table->column('birth', Swoole\Table::TYPE_INT); // 向操作系统申请内存并创建表,如需在Server里使用Table,则Table->create()必须在Server->start()前执行 $table->create(); // 设置行数据(key/value形式) $table->set('UID_1', ['uid' => 10001, 'name' => '刘一', 'gender' => '男', 'birth' => 2001]); $table->set('UID_2', ['uid' => 10002, 'name' => '陈二', 'gender' => '女', 'birth' => 2002]); $table->set('UID_3', ['uid' => 10003, 'name' => '张三', 'gender' => '男', 'birth' => 2003]); $table->set('UID_4', ['uid' => 10004, 'name' => '李四', 'gender' => '女', 'birth' => 2004]); $table->set('UID_5', ['uid' => 10005, 'name' => '王五', 'gender' => '男', 'birth' => 2005]); // 遍历所有行数据 foreach ($table as $row) { $uid = $row['uid']; $name = $row['name']; $gender = $row['gender']; $birth = $row['birth']; echo "e.g.1 - $uid => 俺叫$name($gender),出生于{$birth}年。" . PHP_EOL; } // e.g.1 - 10001 => 俺叫刘一(男),出生于2001年。 // e.g.1 - 10002 => 俺叫陈二(女),出生于2002年。 // e.g.1 - 10003 => 俺叫张三(男),出生于2003年。 // e.g.1 - 10004 => 俺叫李四(女),出生于2004年。 // e.g.1 - 10005 => 俺叫王五(男),出生于2005年。 // 获取指定行数据 $key = 'UID_3'; if ($table->exist($key)) { $row = $table->get($key); $uid = $row['uid']; $name = $row['name']; $gender = $row['gender']; $birth = $row['birth']; echo "e.g.2 - $uid => 俺叫$name($gender),出生于{$birth}年。" . PHP_EOL; // e.g.2 - 10003 => 俺叫张三(男),出生于2003年。 } // 删除指定行数据 $table->del($key); // 获取行数(由于上面代码删除了一行,所以最新行数为4) echo '当前行数:' . $table->count() . PHP_EOL; // 当前行数:4
Copyright © 2024 码农人生. All Rights Reserved