关于thinkphp-queue问题解决
发布时间 - 2021-02-23 00:00:00 点击率:次下面由thinkphp教程栏目给大家介绍关于thinkphp-queue问题解决,希望对需要的朋友有所帮助!
使用版本:TP5.1、 thinkphp-queue 2.0
mysql超时断线问题
队列任务运行一段时间,出现:sqlstate[hy000]: general error: 2006 mysql server has gone away报错。
解决方法和分析:
配置文件database.php中配置断线重连:
// 是否需要断线重连 'break_reconnect' => true, // 断线标识字符串 'break_match_str' => ['2006'],
配置后虽然日志中会出现另一个报错:PDO::prepare(): send of 60 bytes failed with errno=32 Broken pipe,但并不影响程序运行结果。因为断线重连后,程序都会抛出错误:
...} catch (\PDOException $e) {
if ($this->isBreak($e)) {
return $this->close()->query($sql, $bind, $master, $pdo);
}
throw new PDOException($e, $this->config, $this->getLastsql());} catch (\Throwable $e) {
if ($this->isBreak($e)) {
return $this->close()->query($sql, $bind, $master, $pdo);
}
throw $e;} catch (\Exception $e) {
if ($this->isBreak($e)) {
return $this->close()->query($
sql, $bind, $master, $pdo);
}
throw $e;}如何在docker环境进行进程监护
一般情况下,可以使用supervisor监护队列进程。配合docker使用的话,大概有几方案:
1.将supervisor安装到php服务所在的容器中
2.跑一个新的容器来运行队列任务(不用supervisor,容器本身是一个daemon)
3.直接在现有的php容器运行队列任务(命令行使用–daemon选项)
方法一supervisor参考配置(放在/etc/supervisor/conf.d, 文件命名为{file-name}.conf):
[program:my_queue_name]process_name=%(program_name)s_%(process_num)02d command=php /path/to/think queue:work --queue=your-queue-name --sleep=3 --daemon autostart=trueautorestart=truenumprocs=1user=root stopasgroup=truekillasgroup=trueredirect_stderr=truestdout_logfile=/path/to/your-queue.log
方法二新开一个镜像参考配置(在docker-compose.yml中添加服务):
php-queue: container_name: queue image: docker_php-fpm73 restart: always command: php path/to/think queue:work --sleep=3 volumes: - ../project:/var/www/html - ./conf/php:/usr/local/etc/php - ./conf/php/conf.d:/usr/local/etc/php/conf.d - ./conf/supervisor:/etc/supervisor/conf.d networks: - mysql - nginx
方法三有点hack,为了不大改线上环境,最后使用方法三(在host机子操作)。
启动:docker exec -i php7 php /path/to/think queue:work --queue=my-queue-name --sleep=3 --daemon
重启:docker exec -i php7 php /path/to/think queue:restart (重启后发现队列进程消失了),然后再启动
查看队列进程: ps -aux | grep queue
日志调整
有时候某些原因程序出错,会有大量日志生成,最好调整下日志,单独出来。在配置文件config/queue.php开头添加:
use think\facade\Log;Log::init([
'single' => 'queue',
'file_size' => 1024 * 1024 * 10,
'level' => ['error'],]);日志将输出到runtime目录的queue-cli.log文件
# thinkphp
# php
# mysql
# Error
# pdo
# errno
# docker
# database
# 报错
# 重启
# 配置文件
# 是一个
# 会有
# 放在
# 给大家
# 线上
# 然后再
# 新开
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
新三国志曹操传主线渭水交兵攻略
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
网站制作报价单模板图片,小松挖机官方网站报价?
Swift中循环语句中的转移语句 break 和 continue
北京网站制作的公司有哪些,北京白云观官方网站?
如何挑选最适合建站的高性能VPS主机?
如何在万网自助建站中设置域名及备案?
教学论文网站制作软件有哪些,写论文用什么软件
?
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
Laravel如何使用Vite进行前端资源打包?(配置示例)
Laravel如何处理和验证JSON类型的数据库字段
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
如何快速登录WAP自助建站平台?
海南网站制作公司有哪些,海口网是哪家的?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
🚀拖拽式CMS建站能否实现高效与个性化并存?
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Android 常见的图片加载框架详细介绍
如何用免费手机建站系统零基础打造专业网站?
如何在IIS7中新建站点?详细步骤解析
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
Windows Hello人脸识别突然无法使用
如何正确下载安装西数主机建站助手?
Laravel如何使用Blade组件和插槽?(Component代码示例)
简单实现Android验证码
如何在 React 中条件性地遍历数组并渲染元素
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
Laravel如何处理异常和错误?(Handler示例)
Laravel如何集成Inertia.js与Vue/React?(安装配置)
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
如何在服务器上三步完成建站并提升流量?
如何用y主机助手快速搭建网站?
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
如何彻底卸载建站之星软件?
C#如何调用原生C++ COM对象详解
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
Python函数文档自动校验_规范解析【教程】
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
晋江文学城电脑版官网 晋江文学城网页版直接进入
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】


sql, $bind, $master, $pdo);
}
throw $e;}