laravel中Redis队列监听中断的分析_php实例

来源:脚本之家  责任编辑:小易  

1. redis中保2113存的是数组(序列化),绝对不要保存SQL,保存SQL的方法很5261蛋疼4102 保存数组是为了数据库安全(万一sql语句有错误1653,任务就直接失败了),灵活度和兼容性2. 服务器后台作一个shell脚本,死循环,不断从队列中取数据,进行处理.如次反复,如果没有数据,也立即尝试取数据---不要担心性能问题,后台单并发请求,不会造成性能问题3. 因为队列中保存的是数组,不存在这个问题www.zgxue.com防采集请勿采集本网。

1、linxu挂起队列监听

Laravel 的队列只是一些用于操控队列的代码,跟后端具体的数据存储方式无关 Redis 就是数据存储的一种方式,还有 MySQL 等 默认的 Sync 就是同步队列其实并

nohup php artisan queue:listen --timeout=90 --tries=1 >> /dev/null 2>&1 &

Reids是一个比较高级的开源key-value存储系统,采用ANSI C实现。其与memcached类似,但是支持持久化数据存储入队操作 复制代码 代码如下:

2、发现问题(日志)

// 创建请求ID标志, uniqid 无法保证唯一, 自己去搜索生成唯一的方法 $uuid = uniqid(); $tsk_name = "mytask"; $time_out = 30000; // 超时

In Process.php line 429: The process has been sinaled with signal "1".

如果使用的是lpush让队列中存入消息,那么消费者直接blpop从队列取消息即可,因为blpop是阻塞式的,你设置一个超时时间,超时时间内如果有消息进来会自动获取到,如果没

3、查询资料(linux信号中断)

// 创建请求ID标志, uniqid 无法保证唯一, 自己去搜索生成唯一的方法 $uuid = uniqid(); $tsk_name = "mytask"; $time_out = 30000; // 超时

标志 信号值 默认处理动作 发出信号的原因
SIGHUP 1 A 终端挂起或者控制进程终止
SIGINT 2 A 键盘中断(如break键被按下)
SIGQUIT 3 C 键盘的退出键被按下
SIGILL 4 C 非法指令
SIGABRT 6 C 由abort(3)发出的退出指令
SIGFPE 8 C 浮点异常
SIGKILL 9 AEF Kill信号
SIGSEGV 11 C 无效的内存引用
SIGPIPE 13 A 管道破裂: 写一个没有读端口的管道
SIGALRM 14 A 由alarm(2)发出的信号
SIGTERM 15 A 终止信号
SIGUSR1 30,10,16 A 用户自定义信号1
SIGUSR2 31,12,17 A 用户自定义信号2
SIGCHLD 20,17,18 B 子进程结束信号
SIGSEGV 19,18,25 A 进程继续(曾被停止的进程)
SIGSTOP 17,19,23 DEF 终止进程
SIGTSTP 18,20,24 D 控制终端(tty)上按下停止键
SIGTTIN 21,21,26 D 后台进程企图从控制终端读
SIGTTOU 22,22,27 D 后台进程企图从控制终端写

处理动作一项中的字母含义如下

A 缺省的动作是终止进程

B 缺省的动作是忽略此信号,将该信号丢弃,不做处理

C 缺省的动作是终止进程并进行内核映像转储(dump core),内核映像转储是指将进程数据在内存的映像和进程在内核结构中的部分内容以一定格式转储到文件系统,并且进程退出执行,这样做的好处是为程序员提供了方便,使得他们可以得到进程当时执行时的数据值,允许他们确定转储的原因,并且可以调试他们的程序。

D 缺省的动作是停止进程,进入停止状况以后还能重新进行下去,一般是在调试的过程中(例如ptrace系统调用)

E 信号不能被捕获

F 信号不能被忽略

3、验证问题: 根据日志提示的信号值1,对应资料中的说明 终端挂起或者控制进程终止, 调用nohup时指向日志,不使用&后台运行,然后直接关闭终端日志中出现上述的错误提示,问题显然是终端被终止, 更进一步要找的为什么后台运行的命令会被终止。

4、结论

待进一步测试。

总结

到此这篇关于laravel中Redis队列监听中断的文章就介绍到这了,更多相关laravel Redis队列监听中断内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网! 您可能感兴趣的文章:PHP的Laravel框架结合MySQL与Redis数据库的使用部署Laravel框架使用Redis的方法详解laravel使用Redis实现网站缓存读取的方法详解关于 Laravel Redis 多个进程同时取队列问题详解Redis在Laravel项目中的应用实例详解Laravel框架实现redis集群的方法分析Laravel如何使用Redis共享Sessionlaravel配置Redis多个库的实现方法Laravel的Auth验证Token验证使用自定义Redis的例子laravel项目利用twemproxy部署redis集群的完整步骤

建议用php作为守护进程,先fork多个子进程(worker),然后主进程定时读取redis队列,将消息分配给子进程处理。不过这些都有一些开源的包,比如php-resque,具体实现可以看它的源码~,redis的2113subscribe用pconnect链接,执行这个脚本的进程5261会自动监听所订阅4102的频道发送1653的消息ini_set(‘default_socket_timeout’, -1);$redis = new \Redis();$redis->pconnect('127.0.0.1', 6379);//订阅$redis->subscribe(['msg'], 'callfun');function callfun($redis, $channel, $msg){ var_dump([ 'redis' => $redis, 'channel' => $channel, 'msg' => $msg ]);}内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • thinkphp框架实现定时执行任务的两种方法分析
  • laravel 模型使用软删除-左连接查询-表起别名示例
  • thinkphp5实现微信扫码支付
  • cakephp打印sql语句的方法
  • 基于php给大家讲解防刷票的一些技巧
  • 浅谈laravel orm 中的一对多关系 hasmany
  • cookie的优化与购物车实例
  • php中可以自动分割查询字符的parse_str函数使用示例
  • php下的oracle客户端扩展(oci8)安装教程
  • windows的文件系统机制引发的php路径爆破问题分析
  • php 后台怎么开一个进程监听Redis的队列消息呢?用...
  • 如何正确使用redis队列处理php秒杀并发问题
  • laravel 怎么检测队列是否执行
  • php 后台怎么开一个进程监听Redis的队列消息呢?用...
  • laravel自带队列和redis实现队列哪个效率高
  • php 用 redis做队列 运行过程是什么样的
  • 请教PHP+Redis实现任务队列的思路
  • 怎么监听 redis的list 队列
  • 请教php+redis实现任务队列的思路
  • php怎么实现redis阻塞队列
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php的laravel框架结合mysql与redis数据库的使用部署laravel框架使用redis的方法详解laravel使用redis实现网站缓存读取的方法详解关于 laravel redis 多个进程同时取队列问题详解redis在laravel项目中的应用实例详解laravel框架实现redis集群的方法分析laravel如何使用redis共享sessionlaravel配置redis多个库的实现方法laravel的auth验证token验证使用自定义redis的例子laravel项目利用twemproxy部署redis集群的完整步骤thinkphp框架实现定时执行任务的两种方法分析laravel 模型使用软删除-左连接查询-表起别名示例thinkphp5实现微信扫码支付cakephp打印sql语句的方法浅谈laravel orm 中的一对多关系 hasmanycookie的优化与购物车实例php中可以自动分割查询字符的parse_str函数使用示例php下的oracle客户端扩展(oci8)安装教程windows的文件系统机制引发的php路径爆破问题分析php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基laravel框架数据库curd操作、连贯php删除数组中空值的方法介绍php错误allowed memory size of thinkphp3.1.2 使用cli命令行模式运行的方php 判断过去离现在几年的函数(实例代码)php如何使用memcachedzf框架的registry(注册表)使用示例php url路由入门实例thinkphp调试模式与日志记录概述深入探讨:nginx 502 bad gateway错误的解php判断用户是否关注微信公众号thinkphp5框架渲染模板的3种方式简述laravel 添加多语言提示信息的方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved