并发处理的技巧--php

有时候为了追求速率不用innodb,这时候如果想完成类似事物处理有一定的处理技巧。

像redis和mongodb等,都有“设置并返回”操作,可以实现类似于操作系统的信号量机制。

 

其实mysql也可以模拟信号量机制:

比如:

CREATE TABLE IF NOT EXISTS `bing_fa` (
  `key` varchar(200) NOT NULL,
  `is_bing_fa` enum('Y','N') NOT NULL DEFAULT 'N',
  PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

在访问临界资源前测试和设置的P操作:

insert into bing_fa values("event1",'Y') on duplicate key update is_bing_fa="Y"

释放资源的V操作:

update bing_fa SET `is_bing_fa` = 'N' WHERE `key` = 'event1'

 

P返回的影响行数不为0则表示测试通过,否则测试不通过,表示当前有人在使用资源。

posted @ 2013-09-10 15:43  优雅的c  阅读(222)  评论(0编辑  收藏  举报