slc/beanstalkmc

dev-master 2015-01-15 15:13 UTC

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();
	}
}