问答 / 0 / 17 / 创建于 1年前
定时计划任务如何设计的?不要出现以下的MySQL问题:1、MySQL have go away2、PDO::prepare(): send of 93 bytes failed with errno=32 Broken pipe等等问题。
断开重新链接什么的也不起作用,数据都更新一半或者有没有更新都不知道。真服了。
我比较简单 比如要定时执行某个方法 直接用宝塔的定时任务url访问那个方法
这好像和 定时任务没关系
常驻进程就要捕捉异常,laravel > 5.1版好像有断开重连的配置项
'options' => [ PDO::ATTR_PERSISTENT => true, ],
俺没明白啊,你这个定时任务跟常驻进程有啥关系?非得用 workman这样的去实现定时任务吗?
你要是实现秒级的定时任务,你就写个 artisan 命令,里边搞个while(true){ //业务逻辑 //睡200毫秒} 然后用守护进程把这个 artisan命令 监听下,就可以完全可以了啊。我就这么搞的,从来没出过你说的 mysql的那两个问题
这个?
laravel和tp都实现了断线重连吧,说一下你的版本
基于thinkphp5.0.24的fastadmin的1.3.4.20220530
我看了,默认是没有配置这个参数的,你可以试试
你这个是上古操作
直接写1个command脚本:1、配合宝塔的定时任务功能,定期执行tp的think命令或者laravel的artisan命令;2、在command脚本里面写个whil死循环,业务执行完后就sleep休眠一段时间,这个可以配合宝塔的supervisor来进行守护进程(也可以自己写一个定时脚本来进行进程守护)
这边建议及时销毁MySQL连接对象重连。 最简单的做法就是在循环体里面new 一个连接对象,业务逻辑执行完之后 unset 掉。然后开始下一次循环
定时任务其实可以用go写的jiacrontab和java写的xxl-job-admin,用laravel写一个自定义命令console.用这些定时任务平台来触发php命令.比用php的常驻内存实现的定时任务效果要好.有日志,有错误警告,脚本超时提示.
如果是thinkphp的话,可以在database.php配置文件的connections.mysql.break_reconnect设置为true,开启断线重连就好了
我要举报该,理由是:
我比较简单 比如要定时执行某个方法 直接用宝塔的定时任务url访问那个方法
这好像和 定时任务没关系
常驻进程就要捕捉异常,laravel > 5.1版好像有断开重连的配置项
俺没明白啊,你这个定时任务跟常驻进程有啥关系?非得用 workman这样的去实现定时任务吗?
你要是实现秒级的定时任务,你就写个 artisan 命令,里边搞个while(true){ //业务逻辑 //睡200毫秒} 然后用守护进程把这个 artisan命令 监听下,就可以完全可以了啊。我就这么搞的,从来没出过你说的 mysql的那两个问题
这个?
laravel和tp都实现了断线重连吧,说一下你的版本
我看了,默认是没有配置这个参数的,你可以试试
你这个是上古操作
直接写1个command脚本:1、配合宝塔的定时任务功能,定期执行tp的think命令或者laravel的artisan命令;2、在command脚本里面写个whil死循环,业务执行完后就sleep休眠一段时间,这个可以配合宝塔的supervisor来进行守护进程(也可以自己写一个定时脚本来进行进程守护)
这边建议及时销毁MySQL连接对象重连。 最简单的做法就是在循环体里面new 一个连接对象,业务逻辑执行完之后 unset 掉。然后开始下一次循环
定时任务其实可以用go写的jiacrontab和java写的xxl-job-admin,用laravel写一个自定义命令console.用这些定时任务平台来触发php命令.比用php的常驻内存实现的定时任务效果要好.有日志,有错误警告,脚本超时提示.
如果是thinkphp的话,可以在database.php配置文件的connections.mysql.break_reconnect设置为true,开启断线重连就好了