PHP框架Laravel中实现supervisor执行异步进程的方法


Posted in PHP onJune 07, 2017

问题描述

大家在使用Laravel框架实现动态网页时,若有些操作计算量较大,为了不影响用户体验,往往需要使用异步方式去处理。这里使用supervisor和laravel自带的queues实现。下面来看看详细的介绍:

Supervisor

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

方法如下

1. 安装supervisor

apt-get install supervisor

安装完后重启supervisor:service supervisor restart

2. 配置supervisor文件

[program:laravel]
process_name=%(program_name)s_%(process_num)02d
command=php {{ app.root }}/artisan queue:listen
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile={{ app.root }}/storage/logs/queque.log

这里配置了supervisor管理的进程指令,用于启动laravel队列的监听。同时指定了进程数和错误日志地址。

3. queue配置

编写队列代码之前,需要配置queue,其配置位置在config/queue.PHP中,在这里你需要配置你的队列驱动器,例如数据库、Redis、同步等。不同的选择都有相应的配置。我这里选择redis进行配置。

例如:

'redis' => [
  'driver' => 'redis',
  'connection' => env('QUEUE_CONNECTION', 'default'),
  'queue' => 'wordtohtml',
  'expire' => 600,
 ],

4. 编写异步程序

异步成程序在app/job目录下编写,新建一个自己的类,例如:Shutdown,编写类的构造函数和handle函数。handle函数中是程序计算过程。

5. 执行异步函数

$this->dispatch(new Shutdown($vimd));

使用这一条指令就可以创建一个异步程序。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP性能优化 产生高度优化代码
Jul 22 PHP
浅析PHP中Collection 类的设计
Jun 21 PHP
php 在windows下配置虚拟目录的方法介绍
Jun 26 PHP
PHP把数字转成人民币大写的函数分享
Jun 30 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
浅析iis7.5安装配置php环境
May 10 PHP
PHP下载生成的csv文件及问题总结
Aug 06 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
Smarty变量用法详解
May 11 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 #PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 #PHP
PHP laravel中的多对多关系实例详解
Jun 07 #PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 #PHP
PHP框架laravel的.env文件配置教程
Jun 07 #PHP
理清PHP在Linxu下执行时的文件权限方法
Jun 07 #PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 #PHP
You might like
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
教你如何使用php session
2013/10/28 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
php把数组值转换成键的方法
2015/07/13 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
php文件上传类的分享
2017/07/06 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
Python-基础-入门 简介
2014/08/09 Python
python正则实现计算器功能
2017/12/14 Python
numpy排序与集合运算用法示例
2017/12/15 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
python with语句的原理与用法详解
2020/03/30 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
三八妇女节演讲稿
2014/05/27 职场文书
三方股份合作协议书
2014/10/13 职场文书
一年级数学上册复习计划
2015/01/17 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书