乐趣区

关于后端:laravel的Redis队列监听中断

1、linxu 挂起队列监听

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

2、发现问题(日志)

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

3、查问材料 (linux 信号中断)

标记 信号值 默认解决动作 发出信号的起因
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、论断
nohup 命令问题,命令启动后间接敞开终端还是无奈后盾运行,间接就终止了队列监听命令,队列监听命令的父过程 PPID 为被转换成 root 的 ID1,举荐应用 setsid 命令:

setsid php artisan queue:listen --timeout=0 --tries=1 >> queue.log
退出移动版