KingFer

Results 12 comments of KingFer

截图这个报错跟强类型没有关系,是你把一个数组类型直接输出了,TP渲染不了,要么转json输出,要么设置一下default_return_type

这种undefined的错误属于最低级别错误(level是8),也是有办法处理的。 一种是接管TP的异常处理,通过实现异常处理的handle类,将你不想处理的指定到ignoreReport不作处理的变量里面,或者在report方法里面去做判断,比如: ` if ( stripos($e->getMessage(), "Undefined index:") !== false || stripos($e->getMessage(), "Undefined offset:") !== false || stripos($e->getMessage(), "Undefined variable:") !== false ) { return; } ` 还有其他方法比如改底层的错误级别: https://github.com/top-think/framework/blob/2ce3a39725cb68fd559635920ac4e1fc9548822b/src/think/initializer/Error.php#L38 error_reporting(E_ALL);...

我们项目也遇到了 数据库那个配置比较鸡肋的,是根据一些写死的标识值来判断的(当然这些标识在框架升级会做更改): https://github.com/top-think/think-orm/blob/fed6308912982320fe57cf62ceef2ca69fbb796a/src/db/PDOConnection.php#L165 总的来说还是达不到预期,我们采用了另外的方案: 1、队列开始消费入口每次都强制重连,connect('db',true),结束消费时断开连接(针对量不大的场景) 2、采用supervisor管理队列,服务器上定时reload(1小时reload一次)

框架设定如此不是bug,看官方文档,中间件的end在回调触发的时候请求响应输出已经完成了,end是在最后http触发end方法后调用的: https://github.com/top-think/framework/blob/2ce3a39725cb68fd559635920ac4e1fc9548822b/src/think/Http.php#L282 https://github.com/top-think/framework/blob/2ce3a39725cb68fd559635920ac4e1fc9548822b/src/think/Middleware.php#L157

> 生成的sql仅供参考 你是说你的status在模型里面做了类型转换后无效么? 不是啊,,是分页里面调用count方法, count方法恰好调用了buildSql方法的方式去生成sql再去执行获取结果,而分页里面的select又是用bind的方式去获取结果,这样会造成列表数量和count的结果不一致 我知道生成的sql仅供参考,但是你们count方法也用了这个生成的方法, 所以还是有点问题的.

> 为啥不能自己规范下传入的数据呢 我们已经做了规范了哈,我只是提一下你们的分页这个功能,列表(select)和统计(count)的结果调用的方法不同,可能会导致结果不一致~

> tp5的老项目想迁移至tp6,发现有部分业务逻辑是用数组用法的,改动有点大。 我们也是这样, 都统一改了, 升级到tp6本身就是大改动, 不要想着可以简单改一下就能用

我们刚好遇到了,Connection类底层实现了抽象父类的close方法,在会调用子类PDOConnection做了实现: https://github.com/top-think/think-orm/blob/f48dc09050f25029d41a66bfc9c3c403e4f82024/src/db/PDOConnection.php#L1520 但是Connection并没有开放出一个方法可以调用, 不过它的析构函数里面调用了, 性质一样, 所以可以这样使用: `Db::__destruct();` 因为不想改底层, 加个方法很简单, 但是怕以后升级不好维护 缺点是以后升级怕官方会在析构函数里面加其他逻辑,不过目前只有close方法,所以暂且先用着,等官方出个方法 https://github.com/top-think/think-orm/blob/f48dc09050f25029d41a66bfc9c3c403e4f82024/src/db/Connection.php#L327

参考这里 http://www.thinkphp.cn/topic/71633.html

排查带宽、内存、数据库,堆太多号会吃更多内存,在压测时针对同个user也存在高频更新的问题,内存更新可以解决,但存在顺时刷爆的问题。 可以看看这里的优化点: https://www.bilibili.com/video/BV1sj411W71m/