PHP下通过系统信号量加锁方式获取递增序列ID.docVIP

  • 7
  • 0
  • 约2.16万字
  • 约 6页
  • 2016-09-01 发布于河南
  • 举报

PHP下通过系统信号量加锁方式获取递增序列ID.doc

PHP下通过系统信号量加锁方式获取递增序列ID

PHP下通过系统信号量加锁方式获取递增序列IDPHP下通过系统信号量加锁方式获取递增序列ID.txt前一阵子,设计LAJP时需要在PHP中生成唯一ID,看似,,,,菜一碟却着实让我为难了,在Java中一个同步方法即可搞定的事,但在PHP中却没有好的解决思路。--在网上搜了搜,有两个办法但都不太好:一个是简单的以进程ID+时间戳,或进程ID+随机数来产生近似的唯一ID,虽简单但对于追求“完美”的我不愿这样凑合,再说Apache2以后进程会维持相当长得时间,生成的ID发生碰撞的几率还是比较大的;第二个思路是通过Mysql的自增字段,这个就更不能考虑了,效率低不说,我的设计里压根就没数据库。递增ID的获取是个过程:1. 从全局某个存储中读取ID2. 给ID加13. 将ID重新存入全局存储在多进程或线程的程序中需要将上述3步作为单步的原子操作,才能保证ID的唯一。Java中很好解决,这是因为Java程序大多以多线程方式运行,每个线程都能共享Java进程中的变量,并能方便的加线程锁控制线程的运转同步。在PHP中ID全局存储没问题,可以放在session中,大不了放在文件中,但进程间同步就是问题了。实际上进程调度、管理是操作系统内核必须实现的功能,今天介绍的信号量(也称为信号灯)就是在Unix/Linux上解决进程同步的一项技术。信号灯原是用在铁路上的管理机制,我们今天看到的铁路大多是双线并行

文档评论(0)

1亿VIP精品文档

相关文档