Beanstalk消息队列的实现
在工作中要用到消息队列,但是主管为了追求开发速度,让用了一个简易的类 beanstalk
下面来说明这个东西
参考博客:https://my.oschina.net/u/698121/blog/157092
客户端github地址:https://github.com/davidpersson/beanstalk
由于是在windows环境下实用,在安装服务端的时候,还需要安装cygwin,链接:https://github.com/caidongyun/beanstalkd-win
一切准备就绪之后。在cmd开启beanstalkd.exe 我的目录是D:\beanstalkd\beanstalkd-win-master
现在说一下流程,就是前台输入数据,但是和不经过客户端,对这些信息进行单独的处理
前台 index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>测试专用</title>
</head>
<body>
<form action="duang.php" method="post">
<label for="id">i d :</label><input type="text" name="id"><br/><br/>
<label for="name">name:</label><input type="text" name="name"><br/><br/>
<label for="work">work:</label><input type="text" name="work"><br/><br/>
<input type="submit" value="提交" style="width: 200px">
</form>
</body>
</html>
信息传送给duang.php进行处理
<?php
if ($_POST){
require 'index.php';
$data = $_POST;
$process = new Tube();
$process->input($data);
}
接收到数据以后,实例化客户端信息,将数据放入队列
index.php内容如下
<?php
class Tube
{
public function input($data)
{
require 'src/Client.php';
$beanstalk = new Client();
$beanstalk->connect();
$beanstalk->useTube('zhou');
$string = json_encode($data);
$beanstalk->put(
23,
0,
60,
$string
);
$beanstalk->disconnect();
}
}
其中作为服务端的信息test.php和处理程序 doJob内容如下
<?php
require_once 'src/Client.php';
require_once 'doJob.php';
set_time_limit(0); //无限制执行
$sleep_time = 1; //设置休眠时间,防止CPU跑满
$beanstalk = new Client();
$beanstalk->connect();
//var_dump($beanstalk->connect());
$beanstalk->watch('zhou');
//var_dump($beanstalk->listTubesWatched());
//var_dump($beanstalk->listTubes());
//var_dump($beanstalk->stats());
//var_dump($beanstalk->statsTube('zhou'));
while (true) {
//设定休眠时间
sleep($sleep_time);
//接收任务
$job = $beanstalk->reserve();
//处理任务
$result = $beanstalk->touch($job['id']);
if ($result) {
doJob($job['body']);
//删除任务
$beanstalk->delete($job['id']);
} else {
//休眠任务
$beanstalk->bury($job['id'],2);
}
}
客户端实用doJob对数据进行处理
<?php
//doJob用于处理队列中的数据 队列的数据形式为json
function doJob($job){
if (file_exists('test.json')) {
file_put_contents('test.json',$job,8);
}
}
Beanstalk消息队列的实现的更多相关文章
- php 使用beanstalk 消息队列
Beanstalkd 消息队列 一.基本信息Beanstalkd,一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有 ...
- 消息队列Queue大全
消息队列Queue大全 (http://queues.io/) 作业队列,消息队列和其他队列.几乎所有你能想到的都在这. 关于 那里有很多排队系统.他们每个人都不同,是为解决某些问题而创建的.这个页面 ...
- 【消息队列值Beanstalk】beeanstalk初识
Beanstalk是一个高性能.轻量级的.分布式的.内存型的消息队列系统.最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟.其实Beanstalkd是典型的类Mem ...
- beanstalkd 消息队列
概况:Beanstalkd,一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Faceb ...
- Beanstalkd消息队列 -- php类Pheanstalk使用
业务场景 商城订单生成30分钟后 如果未支付关闭订单 解决办法 可以使用延迟消息队列 这里我们用的是beanstalkd Beanstalkd介绍 Beanstalk,一个高性能.轻量级的分布式内 ...
- [源码解析] 消息队列 Kombu 之 基本架构
[源码解析] 消息队列 Kombu 之 基本架构 目录 [源码解析] 消息队列 Kombu 之 基本架构 0x00 摘要 0x01 AMQP 1.1 基本概念 1.2 工作过程 0x02 Poll系列 ...
- [源码分析] 消息队列 Kombu 之 mailbox
[源码分析] 消息队列 Kombu 之 mailbox 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Komb ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- 消息队列 Kafka 的基本知识及 .NET Core 客户端
前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...
随机推荐
- Mac下的Parallel Windows忘记密码怎么办?
Mac机上安装了Parallel Windows,日久年深不登录结果忘记了登录密码,百爪挠心,想破脑壳试了n个密码都不行,放了一个多月也没想起来. 今天没事网上溜溜,肯定也有和我同病相怜的弟兄,果然, ...
- 基于 VLC 的 Android 多媒体解决方案
前段时间项目中需要在 Android 中播放视频.流媒体.查看监控,就研究了一下 Android 多媒体解决方案. 查找了一下,大致有如下几种: Android MediaPlayer FFmpeg ...
- 【工具相关】iOS-Reveal的使用
一,首先下载Reveal工具. Reveal的下载地址:http://revealapp.com/download. 下载界面如下图所示,选择Download Trail蓝色按钮可以进行下载: 二,新 ...
- C语言中的循环结构与选择结构
1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...
- MVC中的时间js格式化
记录下我遇到的一个,MVC中post请求返回一个JSON字符串,其中包含数据库中的时间格式(如:/Date(10000000000)/),不知道怎么处理.百度的方法都不适用,经自己研究,做成了一个Jq ...
- Lojic X
媒体 赫兹 电话 500HZ 网络数据 8000HZ CD 44100HZ 电脑 48000HZ DVD 96000HZ 最大值(蓝光) 192000HZ 横向———————— 清晰度 ...
- Tomcat源码解读:ClassLoader的设计
Tomcat是一个经典的web server,学习tomcat的源码对于我们是有很大的帮助的.前一段时间了解了tomcat的工作的大致流程,对我的新工作有了很大的帮助.刚学习了ClassLoader( ...
- javascript多态 - 类形式实现demo
/* *多态 * 对传入的参数做判断以实现多种调用方式 */ //类形式实现 function Add(){ function zero(){ return 10; } function one(nu ...
- Hadoop+MongoDB的四种方案
背景: 公司核心业务库现存在MongoDB中,分布在6台MongoDB节点.现面临如下问题: 1.最大的一张表有10多个G,MongoDB在查询方面尚能胜任,但是涉及到复杂计算时会比较吃力. 2.Mo ...
- 深入理解Nginx之调试优化技巧
在开发过程中,我们经常会碰到段错误等异常,这时我们需要有相应的机制来进行调试,特别是服务提供在线上时,面对大量的日志信息,合理的调试处理机制对于开发来说是一件非常重要的事情,幸好Nginx本身提供了很 ...