邓莫尔的维基世界

个人日志便签博客 By dume2007@gmail.com

首页 PHP Linux Python 日记 View on GitHub

php扩展编写:ID发号器

ID发号器用途

| 空位 | 毫秒级时间戳 | 服务器编号 | 业务编号 | 自增id |
| 2    | 41           | 6          | 7        | 8      |

根据以上位数组成

编写php扩展基本步骤

1、下载php源码,本文基于php5.6.22

解压后进入源码ext目录,cd ext

3、使用php提供的脚手架脚本ext_skel

一键生成php扩展所需的基本文件

./ext_skel --extname=IDGen

4、修改三个文件config.m4,IDGen.c,php_IDGen.h

ext目录下生成了一个IDGen的文件夹,cd IDGen 进入,主要修改三个文件:config.m4,IDGen.c,php_IDGen.h

5、编译安装

phpize
./configure
make
sudo make install

查看php.ini位置

php --ini

添加IDGen.so扩展

extension=IDGen.so
php -m

6、客户端调用

$IDGen = new IDGen;
$id = $IDGen->get(1);
var_dump($id);

$parse = $IDGen->parse($id);
print_r($parse);

获取Github上的php扩展源码

本扩展还有待完善优化的地方,纯属学习。另外可参考源码上纯C实现的test_IDGen.c
https://github.com/dume2007/php_extension_idgen