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

来源:脚本之家  责任编辑:小易  

原发布者:新马运输企业主要负责人安全生产职责经理是企业安全生产的第一责任者,对本单位的安全生产负总的责任。其安全生产职责如下:一、贯彻执行安全生产政策、法规和标准,审定颁发本单位的安全生产管理制度、安全生产教育培训制度和操作规程,提出本单位安全生产目标e68a84e8a2ad7a6431333433623761并组织实施,定期或不定期召开会议,研究、部署安全生工作。二、负责确定保证职工安全,健康的措施。三、审定本单位改善劳动条件的规划和年度安全技术措施计划,保证本单位安全生产条件所需资金的投入,按规定提取和使用劳动保护措施经费。四、审定新的建设项目(包括挖潜、革新、改造项目)等,应遵守和执行安全卫生设施与主体工程同时设计、同时施工和同时验收投产的“三同时”规定。五、组织对重大伤亡事故的调查分析,按“四不放过”的原则严肃处理,并对所发生的伤亡事故调查、登记和报告的正确性、及时性负责。六、组织有关部门对职工进行安全技术培训和考核,坚持新工人进厂后组织安全教育和特种作业人员持证上岗作业。七、组织开展安全生产竞赛、评比活动,对安全生产的先进集体和先进个人予以表彰或奖励。八、主持召开安全生产例会,定期向职工代表大会报告安全工作情况,认真听取意见和建议,接受职工群众监督。主要负责人安全生产职责第一条、企业业主或总经理对本企业的安全生产和环境保护工作负总的责任。第二条、主管生产的副职对公司的劳动保护和安全生产负责直接责任。第三条、公司主管职协助总经理建立、实施、保持并持续,企业主要负责人七项安全生产职责:根据来《安全生产法》第十八条生产经营单位的主要负责人对本单位安全生产工作负有下列职责:1.建立、健全本单位安全生产责任制。2组织制定本单位安全生产规章制度和操作规程。3.保证本单位安全生自产投入的zd有效实施。4.督促、检查本单位的安全生产工作,及时消除生产安全事故隐患。5.组织制定并实施本单位的生产安全事故应急救援预案。6.及时、如实报告生产安全事故。7.组织制定并实施本单位安全生产教育和培训计划,根据新《安全生产法》的规定,企业企业主要负责人主要以下职责 :(一)建立、健全本单位安全生产责任制;(二)组织制定本单位安全生产规章制度和操作规程;(三)组织制定并实施本单位安全生产教育和培训计划;(四)保证本单位安全生产投入的有效实施;(五)督促、检查本单位的安全生产工作,及时消除生产安全事故隐患;(六)组织制定并实施本单位的生产安全事故应急救援预案;(七)及时、如实报告生产安全事故。拓展资料一、简介主要负责人指的是一个单位或组织主持本单位全面工作具有最高决策权并对本单位承担主要责任的单位主要领导。二、定义1、建设部在《建筑施工企业主要负责人、项目负责人和专职安全生产管理人员安全生产考核管理暂行规定》明确说明本规定所称建筑施工企业主要负责人,是指对本企业日常生产经营活动和安全生产工作全面负责、e799bee5baa6e78988e69d8331333365656465有生产经营决策权的人员,包括企业法定代表人、经理、企业分管安全生产工作的副经理等。2、生产经营单位的主要负责人是指对本单位生产经营负全面责任,有生产经营决策权的人员,具体指的是有限责任公司的董事长、总经理、其他生产经营单位的厂长、经理、矿长投资人等3、《会计法》第五十条规定:"单位负责人,是指单位法定代表人或者法律、行政法规规定代表单位行使职权的主要负责人"。单位负责人主要包括两类人员:一是单位的法定代表人(也称法人代表),即是指依法代表法人单位行使职权的负责人,如国有工业企业的厂长(经理)、公司制的董事长、国家机关的最高行政官员等;二是按照法律、行政法规规定代表单位行使职权的负责人,即是指依法代表非法人单位行使职权的负责人,如代表合伙企业执行合伙企业事务的合伙人、个人独资企业的投资人等。本回答被网友采纳,根据新《安全生产法》的规定,企业企业主要负责知人主要以下职责 第十八条生产经营单位的主要负责人对本单位安全生产工作负有下列职责:(一)建立、健全本单位安全生产责任制;(二)组织制定本单位安全生产规章制度和操作道规程;(三)组织制定并实施回本单位安全生产教育和培训计划;(四)保证本单位安全生产投入的有效实施;(五)督促、检查本单位的安全生产工作,及时消除生产安全事故隐患;(六)组织制定并实施本单位的生产安全事故应答急救援预案;(七)及时、如实报告生产安全事故。本回答被提问者和网友采纳www.zgxue.com防采集请勿采集本网。

应用场景

PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mysqli_函数,或者更灵活的 PDO 实现。2.不要编写垃圾代码 这一条可能易于理解,但是会变得越来越重要,因为 PHP 7 的速度提升可能会

为什么要用呢,有什么好处?这应该放在最开头说,一件东西你只有了解它是干什么的,适合干什么,才能更好的与自己的项目相结合,用到哪里学到哪里,学了不用等于不会,我们平时就应该多考虑一些这样的问题:自己做个什么项目功能能跟 xx 技术相结合呢?这个 xx 技术放在这种业务场景下行不行呢?而不是 “学了这个 xx 技术能干嘛呢,公司现在也没有用这个的呀,学了也没用啊”,带着这样心情去学习 xx 技术,肯定很痛苦。

注重安全生产提高环保意识 积极推进安全生产环境保护工作 如何做好安全生产与环境保护做出安排部署。安全生产工作方面:一是要继续深化安全生产专项整治。二是要以开展安全生产大检查为抓手,

队列大家都知道是将一些耗时的操作先不去做,先埋点,再异步去处理,这样对一些发邮件发短信之类的耗时操作,用户是感觉不到的,因为埋点结束,操作也就结束了,消费队列都是在服务器上做的。主要应用在短信或邮件通知,访问第三方接口订阅消息,商城的一些秒杀活动,都可以结合队列来完成。

生产环境就是正式环境的意思,一般公司都有一个 测试环境,一个生产环境,测试环境用来开发,生产环境用来正式运营

Beanstalkd 介绍

5.6,因为最近的项目都是基于5.6,懒得换环境。

Beanstalkd 是一个高性能,轻量级的分布式内存队列,C 代码,典型的类 Memcached 设计,协议和使用方式都是同样的风格,所以使用过 memcached 的用户会觉得 Beanstalkd 似曾相识。

1、生产环境即工作场所存在的职业病危害因素主要来源于(生产工艺过程)、(劳动过程)、(生产环境)三个方面。2、生产工艺过程中产生的有害因素: 1)化学因素:(生产性毒物)知,如铅、

beanstalkd 的最初设计意图是在高并发的网络请求下,通过异步执行耗时较多的请求,及时返回结果,减少请求的响应延迟。

Ubuntu 安装

sudo apt-get install beanstalkd

配置文件

vim /etc/default/beanstalkd

查看状态

service beanstalkd status# 命令回显 #root@:/www/server/php/72/etc# service beanstalkd status● beanstalkd.service - Simple, fast work queue Loaded: loaded (/lib/systemd/system/beanstalkd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2018-10-16 10:42:28 CST; 6 days ago Docs: man:beanstalkd(1) Main PID: 7033 (beanstalkd) Tasks: 1 (limit: 4634) CGroup: /system.slice/beanstalkd.service └─7033 /usr/bin/beanstalkd -l 0.0.0.0 -p 11300 -b /var/lib/beanstalkdOct 16 10:42:28 ip-10-93-2-137 systemd[1]: Started Simple, fast work queue.

配置连通性 + 持久化

ip 用 0.0.0.0 允许所有连接,靠配置安全组或防火墙去约束连接,放开 -b 参数 (默认没有持久化),内存的队列消息可以落地到硬盘 binlog 实现持久化,断电可重新读取队列消息。

vim /etc/default/beanstalkdBEANSTALKD_LISTEN_ADDR=0.0.0.0BEANSTALKD_LISTEN_PORT=11300BEANSTALKD_EXTRA="-b /var/lib/beanstalkd"

beanstalkd 任务状态

状态 注释
delayed 延迟状态
ready 准备好状态
reserved 消费者把任务读出来,处理时
buried 预留状态
delete 删除状态

管理工具

亲测了很多网上能找到的 beanstalkd 工具,这两款是我最中意的了,一个命令行,一个 web 的。

命令行:https://github.com/src-d/beanstool

web 界面:https://github.com/ptrofimov/beanstalk_console

编程语言客户端

PHP 客户端

https://packagist.org/packages/pda/pheanstalk

composer require pda/pheanstalk

写入 job

<?php//创建队列消息require_once('./vendor/autoload.php');use Pheanstalk\Pheanstalk;$pheanstalk = new Pheanstalk('127.0.0.1',11300);$tubeName = 'email_list';$jobData = [ 'email' => '123456@163.com', 'message' => 'Hello World !!', 'dtime' => date('Y-m-d H:i:s'),];$pheanstalk->useTube( $tubeName)->put( json_encode( $jobData ) );

消费 job

<?phpini_set('default_socket_timeout', 86400*7);ini_set( 'memory_limit', '256M' );// 消费队列消息require_once('./vendor/autoload.php');use Pheanstalk\Pheanstalk;$pheanstalk = new Pheanstalk('127.0.0.1',11300);$tubeName = 'email_list';while ( true ){ // 获取队列信息, reserve 阻塞获取 $job = $pheanstalk->watch( $tubeName )->ignore( 'default' )->reserve(); if ( $job !== false ) { $data = $job->getData(); /* TODO 逻辑操作 */ /* 处理完成,删除 job */ $pheanstalk->delete( $job ); }}

default_socket_timeout 这个参数是一定要加的,php 默认一般是 60s,假如您没有在代码里面设置,采用默认的话(60s),60s 之内如果没有 job 产生,脚本就会报 socket 错误,我写的是 7 天超时,您可以根据业务去调整,记住一定要配置,网上很多搜的 consumer 脚本都没有配置这个,根本不能投入生产环境使用,这是我亲自实践的结果。

关于 while true 是否死循环,很明确告诉你是死循环,但是不会一直耗性能的那样执行下去,它会在 reserve 这里阻塞不动,直到有消息产生才会往下走,所以大可放心使用,我的项目代码里面是使用了方法调用方法自身去实现循环的。

就是这样的代码,供参考:

public function watchJob(){ $job = $this->pheanstalk->watch( config( 'tube' ) )->ignore( 'default' )->reserve(); if ( $job !== false ) { $job_data = $job->getData(); $this->subscribe( $job_data ); $this->pheanstalk->delete( $job ); /* 继续 Watch 下一个 job */ $this->watchJob(); } else { $this->log->error( 'reserve false', 'reserve false' ); }}

监控 beanstalkd 状态

<?php//监控服务状态require_once('./vendor/autoload.php');use Pheanstalk\Pheanstalk;$pheanstalk = new Pheanstalk('127.0.0.1',11300);$isAlive = $pheanstalk->getConnection()->isServiceListening();var_dump( $isAlive );

可以配合 email 做一个报警邮件,脚本每分钟去执行,判断状态是 false,就给管理员发送邮件报警。

一些相关命令

查看 beanstalkd 服务内存占用

top -u beanstalkd

后台运行 consumer 脚本

nohup php googlehome_subscribe.php &

查看 consumer 脚本运行时间

ps -A -opid,stime,etime,args | grep consumer.php

手工重启 consumer 脚本

ps auxf|grep 'googlehome_subscribe.php'|grep -v grep|awk '{print $2}'|xargs kill -9 nohup php googlehome_subscribe.php &

一些总结

php 要把错误日志打开,方便收集 consumer 脚本 crash 的 log,脚本跑出一些致命的 error 一定要及时修复,因为一旦有错就会挂掉,这会影响你脚本的可用性,后期稳定之后可以上 supervisor 这种进程管理程序来管控脚本生命周期。

一些网络请求操作,一定要 try catch 到所有错误,一旦没有 catch 到,脚本就崩。我用的是 Guzzle 去做的网络请求,下面是我 catch 的一些错误,代码片段供参考。

try{ /* TODO: 逻辑操作 */}catch ( ClientException $e ){ $results['mid'] = $this->mid; $results['code'] = $e->getResponse()->getStatusCode(); $results['reason'] = $e->getResponse()->getReasonPhrase(); $this->log->error( 'properties-changed ClientException', $results );}catch ( ServerException $e ){ $results['mid'] = $this->mid; $results['code'] = $e->getResponse()->getStatusCode(); $results['reason'] = $e->getResponse()->getReasonPhrase(); $this->log->error( 'properties-changed ServerException', $results );}catch ( ConnectException $e ){ $results['mid'] = $this->mid; $this->log->error( 'properties-changed ConnectException', $results );}

job 消费之后一定要删除掉,如果长时间不删除,php 客户端会有 false 返回,是因为有 DEADLINE_SOON 这个超时错误产生,所以处理完任务,一定要记得删除,这一点跟 kafka 不一样,beanstalkd 需要开发者自己去删除 job。

以上就是PHP7生产环境队列Beanstalkd用法详解的详细内容,更多关于PHP7中Beanstalkd正确用法的资料请关注真格学网其它相关文章!

要安装Nginx的话 可以搭建虚拟机 安装LINUX 系统 然后安装lnmp一键环境包或者 宝塔。不安装虚拟机也可以 有windows版本的nginx 下载安装一个 写好配置文件就可以了内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • php实现压缩图片尺寸并转为jpg格式的方法示例
  • php实现ip白名单黑名单功能
  • php禁止页面缓存的代码
  • php操作excel文件 基于phpexcel
  • php实现的操作数组类库定义与用法示例
  • php编程中echo用逗号和用点号连接的区别
  • php session实现多级目录存放实现代码
  • php中文件下载功能实现超详细流程分析
  • php自定义加密与解密程序实例
  • php实现随机发扑克牌
  • Windows环境下Nginx+PHP7+MariaDb怎么配生产环境?
  • 企业主要负责人有哪七项安全生产职责
  • 土库曼斯坦,为何是世界第七大棉花生产国?
  • php7现在稳定吗,适合正式环境用吗,最近要开发一个项目,想用php开发
  • PHP7现在可以直接生产用吗
  • 安全生产与环境保护
  • php生产环境是什么意思?主要啥作用?
  • 现在大家生产环境用的php哪个版本,为什么
  • 请问生产环境的职业病危害因素包括哪些呢?
  • php 环境问题
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php技巧php实现压缩图片尺寸并转为jpg格式的方法示例php实现ip白名单黑名单功能php禁止页面缓存的代码php操作excel文件 基于phpexcelphp实现的操作数组类库定义与用法示例php编程中echo用逗号和用点号连接的区别php session实现多级目录存放实现代码php中文件下载功能实现超详细流程分析php自定义加密与解密程序实例php实现随机发扑克牌php中json_decode()和json_encodphp 数组和字符串互相转换实现方php中使用curl实现get和post请求php中iconv函数使用方法php日期转时间戳,指定日期转换成php 页面跳转到另一个页面的多种php中文处理 中文字符串截取(mb_php下intval()和(int)转换使用与利用phpexcel实现excel数据的导入phpmyadmin 配置文件详解(配置)浅析php与数据库代码开发规范php简单遍历对象示例laravel 5+ .env环境配置文件详解php简单开启gzip压缩方法(zlib.output_cophp5.2 json不能正确处理中文、gb编码的解php创建/删除/复制文件夹、文件兼容firefox,chrome的网页灰度效果利用php实现图片等比例放大和缩小的方法详php实现的pdo异常处理操作分析防止mysql注入或html表单滥用的php程序
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved