一个快速的消息队列(最大堆)

来源:互联网 发布:淘宝收货 编辑:程序博客网 时间:2024/06/09 21:13

消息队列大家应该都听过了, 至于消息队列有什么用呢?
如果大家有个网站需要1秒钟处理10000次数据库的话, 我相信数据库是顶不住的, 这个时候可以使用消息队列:
把操作数据库的请求先保存到消息队列中, 然后通过取得消息队列的操作, 一个个的操作数据库, 这样就可以减缓数据库的负担.

kmessage, 是我最近写的一个消息队列, 其实不是队列, 而是最大堆(因为最大堆可以设置权限, 队列不行):
kmessage有以下方法:
put($data, $level = 0);
保存一个记录到消息队列中, level是队列的优先权, level越大, 这个记录就越先被访问, 如果权限一样, 那么先后顺序为不确定

get_one();
消息队列中取得一个记录

get_list($size);
消息队列取得$size个记录

status();
取得消息队列的状态, 形式为json: {queue_size:队列大小, queue_mem_alloc:队列申请的内存}

close();
关闭一个连接
========================================================================

使用方法:
  1. //----------------保存数据-------------------------
  2. include('kmessage.php');

  3. define('HOST', '127.0.0.1');
  4. define('PORT', 7878);

  5. $km = new Kmessage();
  6. if (!$km->connect(HOST, PORT)) {
  7.     $km->error_string();
  8.     exit;
  9. }

  10. for($i = 0; $i < 100; $i++) {
  11.     $km->put("record $i", 100 - $i);
  12. }
复制代码

  1. //----------------获取数据-------------------------
  2. include('kmessage.php');

  3. define('HOST', '127.0.0.1');
  4. define('PORT', 7878);

  5. $km = new Kmessage();
  6. if (!$km->connect(HOST, PORT)) {
  7.     $km->error_string();
  8.     exit;
  9. }

  10. while (($msg = $km->get_one())) {
  11.     echo $msg, "\n";
  12. }
复制代码


服务器选项:


http://code.google.com/p/kmessage/
原创粉丝点击