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 相关文章推荐
使用HMAC-SHA1签名方法详解
Jun 26 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 PHP
推荐十款免费 WordPress 插件
Mar 24 PHP
php实现的IMEI限制的短信验证码发送类
May 05 PHP
使用URL传输SESSION信息
Jul 14 PHP
如何使用php实现评委评分器
Jul 31 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 PHP
Yii框架连表查询操作示例
Sep 06 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 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读取javascript设置的cookies的代码
2010/04/12 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
laravel学习教程之存取器
2016/07/30 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
Javascript中replace()小结
2015/09/30 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python合并同类型excel表格的方法
2018/04/01 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
婚纱店策划方案
2014/05/22 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
党支部考察意见范文
2015/06/02 职场文书
《角的度量》教学反思
2016/02/18 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL
vue elementUI批量上传文件
2022/04/26 Vue.js