在工作中要用到消息队列,但是主管为了追求开发速度,让用了一个简易的类  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消息队列的实现的更多相关文章

  1. php 使用beanstalk 消息队列

    Beanstalkd 消息队列 一.基本信息Beanstalkd,一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有 ...

  2. 消息队列Queue大全

    消息队列Queue大全 (http://queues.io/) 作业队列,消息队列和其他队列.几乎所有你能想到的都在这. 关于 那里有很多排队系统.他们每个人都不同,是为解决某些问题而创建的.这个页面 ...

  3. 【消息队列值Beanstalk】beeanstalk初识

    Beanstalk是一个高性能.轻量级的.分布式的.内存型的消息队列系统.最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟.其实Beanstalkd是典型的类Mem ...

  4. beanstalkd 消息队列

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

  5. Beanstalkd消息队列 -- php类Pheanstalk使用

    业务场景 商城订单生成30分钟后 如果未支付关闭订单 解决办法 可以使用延迟消息队列   这里我们用的是beanstalkd Beanstalkd介绍 Beanstalk,一个高性能.轻量级的分布式内 ...

  6. [源码解析] 消息队列 Kombu 之 基本架构

    [源码解析] 消息队列 Kombu 之 基本架构 目录 [源码解析] 消息队列 Kombu 之 基本架构 0x00 摘要 0x01 AMQP 1.1 基本概念 1.2 工作过程 0x02 Poll系列 ...

  7. [源码分析] 消息队列 Kombu 之 mailbox

    [源码分析] 消息队列 Kombu 之 mailbox 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Komb ...

  8. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  9. 消息队列 Kafka 的基本知识及 .NET Core 客户端

    前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...

随机推荐

  1. 如何在SharePoint2010中创建自定义电子邮件警报处理程序

    字段,如项目名称字段中,将被截断到的电子邮件通知中的 70 个字符.要解决 70 个字符的限制,请使用"更多信息"一节中的介绍的方法. 要嵌入电子邮件通知中的其他内容. 您想要更改 ...

  2. 为Windows Azure Web站点添加MIME类型解决文件下载失败的问题

    这几天在倒腾Autodesk 360 Viewer,前面的文章也介绍过了,这将是一个全新的在线模型浏览工具.我做了个实验,把A360Viewer放在一个web 站点,然后发布到Windows Azur ...

  3. Hosting socket.io WebSocket apps in IIS using iisnode

    In this post I explain how to configure a socket.io node.js application to use of WebSockets when ho ...

  4. 极其简单的搭建eclipse的android开发环境

    这篇博客是关于如何搭建eclipse的android开发环境, 与网上的其他博客不同,我的方法比他们简单的多,所 以推荐给大家. 搭建eclipse的android开发环境步骤: 1.配置JDK(Ja ...

  5. 【iOS】彩色TabBar切换动画实现

    无意间看到一个彩色TabBar切换的设计图,感觉很不错,有空就把他实现了. 环境信息 Mac OS X 10.10.4 Xcode 6.4 iOS 8.4 效果图: 效果图 源码下载地址: https ...

  6. MVC 生成图片,下载文件(图片不存在本地,在网上下载)

    /// <summary> /// 生成图片 /// </summary> /// <param name="collection"></ ...

  7. View Focus的处理过程及ViewGroup的mFocused字段分析

    通过上篇的介绍,我们知道在对KeyEvent的处理中有非常重要的一环,那就是KeyEvent在focus view的path上自上而下的分发, 换句话说只有focus的view才有资格参与KeyEve ...

  8. FMDB的简单使用

    1.什么是FMDB? FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API. 无论项目中使用 ARC 还是 MRC,对 FMDB 都没有任何影响,FMDB ...

  9. (转) 一步一步学习ASP.NET 5 (三)- 认识新的Web结构

    转发:微软MVP 卢建晖 的文章,希望对大家有帮助.原文:http://blog.csdn.net/kinfey/article/details/44421979 编者语 : 今天微软的两大盛事,早上 ...

  10. MongoDB使用汇总贴

    金天:学习一个新东西,就要持有拥抱的心态,如果固守在自己先前的概念体系,就会有举步维艰的感觉.应用mongodb(NoSQL)开发,首先要打破原先的关系思维.范式思维. 本文作为使用mongodb一路 ...