laravel和thinkphp 定时任务如何设置?

定时计划任务如何设计的?
不要出现以下的 MySQL 问题:
1、MySQL have go away
2、PDO::prepare(): send of 93 bytes failed with errno=32 Broken pipe
等等问题。

目前采用的是 command+Workerman。常驻进程就会出现很多 MySQL 问题,搜索资料已经两个星期了没有好的解决办法。#

断开重新链接什么的也不起作用,数据都更新一半或者有没有更新都不知道。真服了。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 17

我比较简单 比如要定时执行某个方法 直接用宝塔的定时任务 url 访问那个方法

1年前 评论

这好像和 定时任务没关系

Laravel

1年前 评论
转打瞎比比 (楼主) 1年前

常驻进程就要捕捉异常,laravel > 5.1 版好像有断开重连的配置项

'options' => [
    PDO::ATTR_PERSISTENT => true,
],
1年前 评论
Complicated

俺没明白啊,你这个定时任务跟常驻进程有啥关系?非得用 workman 这样的去实现定时任务吗?

1年前 评论
Complicated

你要是实现秒级的定时任务,你就写个 artisan 命令,里边搞个 while (true){ // 业务逻辑 // 睡 200 毫秒} 然后用守护进程把这个 artisan 命令 监听下,就可以完全可以了啊。我就这么搞的,从来没出过你说的 mysql 的那两个问题

1年前 评论

这个?

file

1年前 评论

laravel 和 tp 都实现了断线重连吧,说一下你的版本

1年前 评论
转打瞎比比 (楼主) 1年前

file

我看了,默认是没有配置这个参数的,你可以试试

1年前 评论
转打瞎比比 (楼主) 1年前

你这个是上古操作

1年前 评论
转打瞎比比 (楼主) 1年前

直接写 1 个 command 脚本:1、配合宝塔的定时任务功能,定期执行 tp 的 think 命令或者 laravel 的 artisan 命令;2、在 command 脚本里面写个 whil 死循环,业务执行完后就 sleep 休眠一段时间,这个可以配合宝塔的 supervisor 来进行守护进程(也可以自己写一个定时脚本来进行进程守护)

1年前 评论

这边建议及时销毁 MySQL 连接对象重连。 最简单的做法就是在循环体里面 new 一个连接对象,业务逻辑执行完之后 unset 掉。然后开始下一次循环

1年前 评论

定时任务其实可以用 go 写的 jiacrontab 和 java 写的 xxl-job-admin, 用 laravel 写一个自定义命令 console. 用这些定时任务平台来触发 php 命令。比用 php 的常驻内存实现的定时任务效果要好。有日志,有错误警告,脚本超时提示.

1年前 评论

如果是 thinkphp 的话,可以在 database.php 配置文件的 connections.mysql.break_reconnect 设置为 true,开启断线重连就好了

1年前 评论