Archives

帖子来自 lgg201 RSS

lgg201

PHP利用共享内存构建计数器完成自增数值id生成 -- 适用于网页游戏携带区服号的数值id生成

作者: lgg201 (1 篇文章) 日期: 十二月 16, 2010 在 7:04 下午
评论 (0)

我们之前的id生成是直接用的php的uniqid 存在的问题有: 1. 高并发下容易重复:当高并发适用uniqid来产生唯一id的时候,我的测试数据是:1000并发,每并发产生1000次,实际输出63万uid(可能是标准输出原因未全部输出),5次重复 2. mysql中使用字符串类型的key存在性能问题 使用这里创建的ud_uniqid带来的改变: 优点1. 高并发重复几率降低:我的测试数据是:1000并发,每并发产生1000次,实际输出93万,无重复 优点2. 使用过程中,可以产生唯一的递增数值id,作为mysql主键有性能优势 缺点1. 性能比uniqid略低,耗时约为uniqid的1.5倍(不过在10e-5 -- 10e-4级别的时间差,1.5倍应该可以忽略) 缺点2. windows不能使用(windows不支持usleep) 缺点3. 由于使用了共享内存,所以需要在服务器开启的时候读取上一次的最大值,服务器关闭的时候写入当前的最大值 下面直接上代码了, ...

继续 ›

分类: 博客征文专栏, 并行计算, 游戏