在工作中要用到消息队列,但是主管为了追求开发速度,让用了一个简易的类  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. AdaBoost

    一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单"听取多人意见,最后综合决策",但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下午,邹博在我组织的机器学 ...

  2. DevExpress应用案例--语音识别器Dual Writer

    Dual Writer是 一个以语音识别为特色的文档处理器,无需安装其他软件,只需要插入你的麦克风就可以开始录入口述文字.它不仅支持MS Word的DOCX格式,还支持 RTF.ODT.TXT等常见文 ...

  3. Android 网络HTML查看器

    本文实现一个基于Android的网络HTML查看器 新建项目,项目布局文件如下: <LinearLayout xmlns:android="http://schemas.android ...

  4. 【读书笔记】iOS-使用Web Service-基于客户端服务器结构的网络通信(一)

    Web Service技术是一种通过Web协议提供服务,保证不同平台的应用服务可以互操作,为客户端程序提供不同的服务. 目前3种主流的Web Service实现方案用:REST,SOAP和XML-RP ...

  5. ThinkPHP 空方法 显示

    TP如果  一个控制器 没有一个方法 ,只要有一个模版,URL会对应显示模版名称. 例子 http://localhost/yiyunmap/map/test map控制器 并没有 test方法 但是 ...

  6. php页面静态化

    如何优化页面响应时间: 动态页面静态化 优化数据库 使用负载均衡 使用缓存 如果页面中的一些内容不经常改动,可以使用动态页面静态化.好处是:减少服务器脚本的计算时间:降低服务器的响应时间. 1.动态U ...

  7. HTML页面禁止选择、页面禁止复制、页面禁止右键

    HTML页面内容禁止选择.复制.右键刚在一个看一个站点的源代码的的时候发现的,其实原来真的很简单 <body leftmargin=0 topmargin=0 oncontextmenu='re ...

  8. 8、需求分析师要阅读的书籍 - IT软件人员书籍系列文章

    需求分析是软件项目开始阶段重要的一步.而需求分析是项目经理或产品经理需要经历的一环,所以说需求分析是项目经理或产品经理需要具备的知识.但是,项目角色中却分离出了需求分析师这个角色,也就是说,在大型的或 ...

  9. Images.xcassets

    Images.xcassets 概述 功能 方便用户管理图像资源. 图片获取方式 Images.xcassets中的图片资源只能通过imageNamed:方法加载,通过NSBundle的pathFor ...

  10. Asp.net MVC验证那些事(1)-- 介绍和验证规则使用

    数据的有效性验证,是程序开发中必不可少的环节.这篇文章,我们将用一个实例来说明如何在MVC中使用Validation来保证无论是新增或者更新数据的时候,都必须符合我们定义的验证规则,否则就会提示错误. ...