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 相关文章推荐
第十四节--命名空间
Nov 16 PHP
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
php生成随机数或者字符串的代码
Sep 05 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
web目录下不应该存在多余的程序(安全考虑)
May 09 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
Jun 12 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
PHP Yaf框架的简单安装使用教程(推荐)
Jun 08 PHP
Laravel框架创建路由的方法详解
Sep 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
带密匙的php加密解密示例分享
2014/01/29 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
PHP中的替代语法简介
2014/08/22 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
python3调用windows dos命令的例子
2019/08/14 Python
如何基于Python批量下载音乐
2019/11/11 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
如何编写python的daemon程序
2021/01/07 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
法国春天百货官网:Printemps.com
2020/06/29 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
J2EE中常用的名词进行解释
2015/11/09 面试题
高中自我鉴定
2013/12/20 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
高一学生期末评语
2014/04/25 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
小英雄雨来观后感
2015/06/09 职场文书