基于HTTP协议的轻量级开源简单队列服务:HTTPSQS

HTTPSQS 编译安装:

ulimit -SHn 65535
wget 
http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz
tar zxvf libevent-2.0.12-stable.tar.gz
cd libevent-2.0.12-stable/
./configure --prefix=/usr/local/libevent-2.0.12-stable/
make
make install
cd ../

wget 
http://httpsqs.googlecode.com/files/tokyocabinet-1.4.47.tar.gz
tar zxvf tokyocabinet-1.4.47.tar.gz
cd tokyocabinet-1.4.47/
./configure --prefix=/usr/local/tokyocabinet-1.4.47/


####  file /sbin/init 或者file /bin/ls 查看linux是多少位

#注:在32位Linux操作系统上编译Tokyo cabinet,请使用./configure --enable-off64代替./configure,可以使数据库文件突破2GB的限制。
#./configure --enable-off64 --prefix=/usr/local/tokyocabinet-1.4.47/
make
make install
cd ../

wget 
http://httpsqs.googlecode.com/files/httpsqs-1.7.tar.gz
tar zxvf httpsqs-1.7.tar.gz
cd httpsqs-1.7/
make
make install
cd ../


启动httpsqs

httpsqs -d -p 1218 -x /data0/queue


安装成功后可以查看帮助命令

[root@xoyo ~]# httpsqs -h

-l <ip_addr> 监听的IP地址,默认值为 0.0.0.0 
-p <num> 监听的TCP端口(默认值:1218)
-x <path> 数据库目录,目录不存在会自动创建(例如:/opt/httpsqs/data)
-t <second> HTTP请求的超时时间(默认值:3)
-s <second> 同步内存缓冲区内容到磁盘的间隔秒数(默认值:5)
-c <num> 内存中缓存的最大非叶子节点数(默认值:1024)
-m <size> 数据库内存缓存大小,单位:MB(默认值:100)
-i <file> 保存进程PID到文件中(默认值:/tmp/httpsqs.pid)
-a <auth> 访问HTTPSQS的验证密码(例如:mypass123)
-d 以守护进程运行
-h 显示这个帮助


请使用命令“killall httpsqs”、“pkill httpsqs”和“kill `cat /tmp/httpsqs.pid`”来停止httpsqs。
注意:请不要使用命令“pkill -9 httpsqs”和“kill -9  httpsqs的进程ID”来结束httpsqs,否则,内存中尚未保存到磁盘的数据将会丢失。


<?php  

include_once("httpsqs_client.php");   

$httpsqs = new httpsqs($httpsqs_host, $httpsqs_port, $httpsqs_auth, $httpsqs_charset);   


/*  

1. 将文本信息放入一个队列(注意:如果要放入队列的PHP变量是一个数组,需要事先使用序列化、json_encode等函数转换成文本) 

    如果入队列成功,返回布尔值:true  

    如果入队列失败,返回布尔值:false  

*/   

$result = $httpsqs->put($queue_name, $queue_data);   

   

/*  

2. 从一个队列中取出文本信息 

    返回该队列的内容 

    如果没有未被取出的队列,则返回文本信息:HTTPSQS_GET_END 

    如果发生错误,返回布尔值:false  

*/   

$result = $httpsqs->get($queue_name);   

  

/*  

3. 从一个队列中取出文本信息和当前队列读取点Pos 

    返回数组示例:array("pos" => 7, "data" => "text message") 

    如果没有未被取出的队列,则返回数组:array("pos" => 0, "data" => "HTTPSQS_GET_END") 

    如果发生错误,返回布尔值:false 

*/   

$result = $httpsqs->gets($queue_name);  

  

/*  

4. 查看队列状态(普通方式) 

*/   

$result = $httpsqs->status($queue_name);  

  

/*  

5. 查看队列状态(JSON方式) 

    返回示例:{"name":"queue_name","maxqueue":5000000,"putpos":130,"putlap":1,"getpos":120,"getlap":1,"unread":10} 

*/   

$result = $httpsqs->status_json($queue_name);  

   

/*  

6. 查看指定队列位置点的内容 

    返回指定队列位置点的内容。 

*/   

$result = $httpsqs->view($queue_name, $queue_pos);  

   

/*  

7. 重置指定队列 

    如果重置队列成功,返回布尔值:true  

    如果重置队列失败,返回布尔值:false  

*/   

$result = $httpsqs->reset($queue_name);  

   

/*  

8. 更改指定队列的最大队列数量 

   如果更改成功,返回布尔值:true 

   如果更改操作被取消,返回布尔值:false 

*/   

$result = $httpsqs->maxqueue($queue_name, $num);  

  

/* 

9. 修改定时刷新内存缓冲区内容到磁盘的间隔时间 

   如果更改成功,返回布尔值:true 

   如果更改操作被取消,返回布尔值:false 

*/  

$result = $httpsqs->synctime($num);  

?>  


本文下附有安装包(内含有php类)

原地址: http://blog.zyan.cc/httpsqs/

你可能感兴趣的:(httpsqs)