Laravel 5.2 的一处严重性能问题
原文链接:http://tech.tjs.im/2017-10-08/mb_strpos-pe...
最近发现 Laravel 在处理某类队列任务时时间超长,经排查发现 src/Illuminate/Queue/Jobs/Job.php 文件中的 rolveQueueableEntity 使用了 Illuminate Str 的 startsWith,此方法中使用了 mb_strpos 方法。mb_strpos 的性能非常差 (Why is mb_strpos so considerably slower than strpos?),在处理大 string (100M以上) 时会产生严重性能问题。可以看到这里处理的数据有一种是序列化后的 Job 实例,是有可能出现大的 string.
由于 Laravel 已经停止对 5.2 版本的支持,5.5版本也更新了实现,不再使用rolveQueueableEntity方法,这个问题只能自行修复。修复方法:fix bad performance of resolve queueable entity
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: