tryCatch

Results 8 comments of tryCatch

将文件用base64编码后,放在body里rpc传输,再写入到服务器磁盘,或者数据库

参考InitialAccountAndUserSeeder的实现,添加更多账号,再执行命令行即可。也可以参考InitialAccountAndUserSeeder 操作的数据表,自行实现添加注册功能

注释掉debug级别的Log,在config/config.php StdoutLoggerInterface::class => [ 'log_level' => [ LogLevel::ALERT, LogLevel::CRITICAL, // LogLevel::DEBUG, LogLevel::EMERGENCY, LogLevel::ERROR, LogLevel::INFO, LogLevel::NOTICE, LogLevel::WARNING, ], ],

设置 OnOneServer ,拿到锁的server执行定时任务时,pod突然重启,锁没能释放,会导致这种问题,也无法避免,只能等锁超时。 2个建议,一是调低锁的时长,二是任务本身要有防重复执行代码

追源码可以看到,默认锁3600秒,也就是1小时。 你上面的->setMutexPool("default")->setMutexExpires(29) ,这串代码,也就是调低了锁时长,到29秒。

不过你的临时方案没有设置OnOneServer,setMutexExpires 其实也是不起效的,存在多个pod并发执行定时任务的情况。

这个锁是最大的加锁时长。 你锁60秒,01秒加锁,30秒重启服务器,肯定只锁30秒了。。。 如果你希望每次重启后立即执行,就去掉框架提供的锁,自行在要执行的定时任务里做好防并发、防重复执行的逻辑

是你因为setMutexExpires是 30*60,互斥锁时间太长导致。 如果有 pod 拿到了互斥锁,开始执行定时任务,但是锁还没被释放时,pod 重启,这时互斥锁还有几十分钟的有效期,导致 pod 启动后,这段时间内不会有其他 pod 拿到互斥锁