slc /beanstalkmc
Beanstalk多连接库
dev-master
2015-01-15 15:13 UTC
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-08-29 04:03:26 UTC
README
Beanstalk Multi Connection PHP Library
本库用于beanstalkd消息队列(http://kr.github.io/beanstalkd/),旨在处理高延迟网络中的大量消息,在这些网络中,消息在接收者和队列服务器之间的往返会极大地减慢处理速度。
为了避免这种情况,我们构建了一个库,它利用了数百甚至数千个与消息队列服务器的连接,以便尽可能快地检索所有消息。
我们在一个每秒处理数千条消息的生产环境中使用这个库。
创建实例并连接到beanstalk
$beanstalk = new \slc\beanstalkmc\Beanstalk(array(
'Host' => $beanstalk_host,
'Port' => $beanstalk_port,
'Connections' => 1
));
发布消息/作业
$beanstalk->publishMessage(
$message,
$tube = "DefaultTube",
$priority = 0,
$delay = 0,
$timeToRun = 600
);
监控管道
$beanstalk->watch($tube);
在所有开放连接上开始保留作业
$beanstalk->startReserve();
消息一来就获取作业
这是最重要的一部分,所有打开的连接都将永久检查新数据,新接收到的数据将被放入一个数组中,在处理完所有打开的非阻塞连接后返回。
while(is_array($jobs = $beanstalk->fetchReserved())) {
foreach($jobs AS $job) {
// $job is a Beanstalk_Job instance, $job->getData() gets the message content
// delete job
$job->delete();
// or release job with $job->release();
}
}