Laravel 5.2 的一處嚴重效能問題

sdpfoue發表於2017-10-21

原文連結: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 協議》,轉載必須註明作者和本文連結

相關文章