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的无限分类实现想法~
Jan 02 PHP
15种PHP Encoder的比较
Mar 06 PHP
php获得当前的脚本网址
Dec 10 PHP
解析php时间戳与日期的转换
Jun 06 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
php实现网页端验证码功能
Jul 11 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 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下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
CSS常用网站布局实例
2008/04/03 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
Python3 元组tuple入门基础
2020/02/09 Python
python3 配置logging日志类的操作
2020/04/08 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
Python中qutip用法示例详解
2020/10/02 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
物业客服专员岗位职责
2013/11/30 职场文书
自动一体化专业求职信
2014/03/15 职场文书
网络管理专业求职信
2014/03/15 职场文书
排查整治工作方案
2014/06/09 职场文书
环保宣传语大全
2015/07/13 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
导游词之无锡东林书院
2019/12/11 职场文书