swoole_table->column

内存表增加一列

bool swoole_table->column(string $name, int $type, int $size = 0);

swoole_table::TYPE_INT默认为4个字节,可以设置1,2,4,8一共4种长度
swoole_table::TYPE_STRING设置后,设置的字符串不能超过此长度
swoole_table::TYPE_FLOAT会占用8个字节的内存

非x86环境需要内存对齐

/*
Linux raspberrypi 4.4.34-v7+ #930 SMP Wed Nov 23 15:20:41 GMT 2016 armv7l GNU/Linux

gcc version 4.9.2 (Raspbian 4.9.2-10)

model name	: ARMv7 Processor rev 4 (v7l)
BogoMIPS	: 76.80
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4
*/

//bad
use Swoole\Table;
$table = new \Swoole\Table(8);
$table->column('data',Table::TYPE_STRING, 1);
$table->create();
$table->set(1,[]);
var_dump($table->get(1));
//result: Bus error

//good
use Swoole\Table;
$table = new \Swoole\Table(8);

$table->column('data',Table::TYPE_STRING, 1);
$table->column('pad',Table::TYPE_STRING, 1);
$table->create();

$table->set(1,[]);
var_dump($table->get(1));
/*
result
array(2) {
  ["data"]=>
  string(0) ""
  ["pad"]=>
  string(0) ""
}
*/