`

Beanstalkd内存队列使用

阅读更多
pheanstalk_worker.php
<?php

// Hopefully you're using Composer autoloading.

// 定义 BASE_PATH
set_time_limit(0);
ini_set('memory_limit', '1024M');
define('BASE_PATH', __DIR__);

// Autoload 自动载入

require BASE_PATH.'/vendor/autoload.php';

use Pheanstalk\Pheanstalk;

$pheanstalk = new Pheanstalk('127.0.0.1');

_log('starting to run');
$cnt = 0;
$done_jobs = array();

// worker (performs jobs)

while(1){

	$islive = $pheanstalk->getConnection()->isServiceListening();
	if(!$islive){
		_log('connection failed');
	}

	
	$job = $pheanstalk->watch('testtube')->ignore('default')->reserve();
	$job_encoded = json_decode($job->getData(),true);
	$done_jobs[] = $job_encoded;
	_log('job:'.$job->getData());
	$pheanstalk->delete($job);
	$cnt++ ;

	$memory = memory_get_usage();
    _log('memory:' . $memory.',cnt:' . $cnt);

    if($memory > 1000000) {
		//_log('exiting run due to memory limit');
		//exit;
    }

    usleep(10);
}


function _log($txt) {
	file_put_contents('log/worker.txt', $txt . "\n", FILE_APPEND);
}

 

<?php

// Hopefully you're using Composer autoloading.

// 定义 BASE_PATH

define('BASE_PATH', __DIR__);

// Autoload 自动载入

require BASE_PATH.'/vendor/autoload.php';

use Pheanstalk\Pheanstalk;

$pheanstalk = new Pheanstalk('127.0.0.1');

echo "<pre>";
print_R($pheanstalk->stats());
echo "</pre>";

// ----------------------------------------
// producer (queues jobs)

for($i=0;$i<10000;$i++){

	$job = new stdClass();
	$job->envelope_id = rand();
	$job->date = date('Y-m-d H:i:s');
	$job_data = json_encode($job);

	$pheanstalk->useTube('testtube')->put($job_data);
	echo "pushed: " . $job_data . "\n";
}

// ----------------------------------------
// check server availability

$pheanstalk->getConnection()->isServiceListening(); // true or false

 

分享到:
评论

相关推荐

    Beanstalkd分布式内存队列系统 的 spring boot starter 封装_java

    Beanstalkd分布式内存队列系统 的 spring boot starter 封装 部署 beanstalkd 服务 docker run -d -p 11300:11300 schickling/beanstalkd ② 引入依赖 &lt;groupId&gt;com.pig4cloud.beanstalk&lt;/groupId&gt; &lt;artifactId&gt;...

    Beanstalkd分布式内存消息队列系统的PHP对接程序示例代码

    Beanstalkd是一个高性能、轻量级的分布式内存队列系统,它的设计初衷是通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟。具有如下功能特点。 高性能与轻量级:Beanstalkd是一个高效的内存队列系统...

    PHP Beanstalkd消息队列的安装与使用方法实例详解

    Beanstalkd是一个高性能、轻量级的分布式内存队列系统。它的设计目的是为了提供一个简单、可扩展的方式来分发工作,使得工作可以以一种可靠的方式异步执行。它的工作原理是将待处理的任务放入队列中,然后由消费者...

    PHP消息队列Beanstalkd类.zip

    Beanstalkd,一个高性能、轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Facebook Causes应用。后来开源,现在有...

    Laravel开发-laravel-async-beanstalkd

    1. **高效**: Beanstalkd 使用内存存储数据,这意味着它具有非常快的读写速度。 2. **简单**: 它的协议设计简洁,易于实现客户端,对于开发者来说,理解和使用起来都相对容易。 3. **可扩展性**: Beanstalkd 支持多...

    Beanstalkd手册

    Beanstalk,一个高性能、轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Facebook Causes应用。

    PHP7生产环境队列Beanstalkd用法详解

    Beanstalkd是一个高性能、轻量级的分布式内存队列系统,它使用C语言编写。类比Memcached,其协议和使用方式类似于memcached,因此有memcached使用经验的用户会感到熟悉。队列系统适用于将耗时操作异步处理,使得...

    phpBeanstalkdAdminBeanstalkd的监视和管理界面

    1. **实时监控**:phpBeanstalkdAdmin能够实时显示Beanstalkd服务器的状态,包括服务器的统计信息(如内存使用、连接数等)、 tubes(管道)的状态以及当前的任务数量。 2. **tube管理**:用户可以通过该工具创建、...

    php队列+php-redis队列+php-redis扩展

    在实际项目中,可以根据具体需求选择合适的队列实现,例如RabbitMQ、Beanstalkd或其他NoSQL数据库。同时,不断优化队列处理策略,如合理设置Redis缓存过期时间,可以进一步提高系统的整体性能。

    beanstalkd_exporter:http的beantalkd指标导出器

    若内存使用过高,可能需要调整beanstalkd的配置或优化数据结构。 总之,beanstalkd_exporter是beanstalkd监控的关键组件,它让开发者能够充分利用Prometheus的强大功能,对beanstalkd服务进行精细化管理和故障排查...

    beanstalkd-win:Windows,高级,轻量级的分布式内存模拟系统

    **beanstalkd-win** 是一个专为Windows操作系统设计的高级、轻量级的分布式内存对象缓存系统。这个系统主要用于解决高性能应用场景下的数据缓存问题,以提高应用程序的响应速度和处理能力。beanstalkd-win在Windows...

    ansible-beanstalkd:Beanstalkd 的 Ansible 角色

    2. **配置 Beanstalkd** - 可能会涉及修改 `/etc/beanstalkd.conf` 配置文件,如设置监听端口、最大内存使用量等。 3. **启动与管理 Beanstalkd** - 使用 Ansible 的 service 模块确保 Beanstalkd 服务已启动并设置...

    A PHP beanstalkd Client-开源

    它允许PHP开发者利用Beanstalkd这个内存中的工作队列服务器。BeanStalk可能是这个客户端库的名字,或者是对Beanstalkd的一个简称。通过这个客户端库,PHP开发者能够更方便地将任务放入队列,由Beanstalkd服务器管理...

    基于Swoole的微信发送模板消息队列服务-Mega-WeChat.zip

    同时,对服务的运行状态进行监控,如CPU、内存占用、队列长度、发送成功率等,以便及时发现并解决问题。 10. **异常处理与重试机制**:为了保证消息的可靠性,项目可能实现了异常处理和重试策略,比如消息发送失败...

    PHP+memcache实现消息队列案例分享

    标题《PHP+memcache实现消息队列案例...同时,文章也提供了一些扩展知识,如Starling和Beanstalkd等轻量级队列服务器的介绍,以及PHP共享内存的基础概念,这些都能帮助开发者拓展视野,理解消息队列的多样实现方式。

    php的beanstalk扩展(addserver方式)所需安装程序 libbeanstalkclient 压缩包

    Beanstalkd,一个高性能、轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Facebook Causes应用。 则需要下载安装扩展...

    开源项目-beanstalkg-beanstalkg.zip

    Beanstalkg是一个用Go语言编写的开源项目,其目标是实现beanstalkd轻量级工作队列服务器。Beanstalkd是一款简单、高性能的分布式作业队列系统,常用于处理批量任务、异步处理以及缓存数据。通过Beanstalkg,开发者...

    Laravel开发-laravel-sorted-queue

    - **内存管理**:考虑到排序可能涉及大量任务,驱动可能需要优化内存使用,以防止内存溢出。 6. **监控与调试** - **监控工具**:使用像Supervisor这样的进程管理工具来确保worker持续运行,并在任务失败时自动重...

Global site tag (gtag.js) - Google Analytics