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调用Java对象的方法
Oct 09 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
Session保存到数据库的php类分享
Oct 24 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
php画图实例
Nov 05 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
session 加入redis的实现代码
Jul 15 PHP
Yii2中多表关联查询hasOne hasMany的方法
Feb 15 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
如何让PHP编码更加好看利于阅读
May 12 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 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的curl封装类用法实例
2014/11/07 PHP
PHP数组实例详解
2016/06/26 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
PHP5.6读写excel表格文件操作示例
2019/02/26 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
js的一些常用方法小结
2011/06/29 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
Vue动态加载异步组件的方法
2018/11/21 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
植物选择:Botanic Choice
2017/02/15 全球购物
12月小学生校园广播稿
2014/02/04 职场文书
员工考核评语大全
2014/04/26 职场文书
Java SSM配置文件案例详解
2021/08/30 Java/Android
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL