您好,我在尝试使用以下代码创建大量产品评论时遇到内存泄漏:
echo "Start: " . memory_get_usage();
foreach ($reviews['items'] as $review) {
$newReview = $this->handleReviewData($review, $languages, $salesChannels, $context);
if ($newReview) {
$reviewsToImport[] = $newReview;
}
echo "End: " . memory_get_usage();
}
$this->productReviewRepository->create($reviewsToImport, $context);
Run Code Online (Sandbox Code Playgroud)
我正在$this->productReviewRepository
inside上运行多个查询$this->handleReviewData
。所以我猜测以某种方式造成了泄漏,但我找不到 or ->flush()
(->clear($entity)
因为它不是 Symfony)。有任何想法吗?
它为每次迭代添加+-1000000 bytes
( 1mb
) 内存。
处理评论数据函数:
public function handleReviewData($review, $languages, $salesChannels, $context): ?array
{
$reviewLocaleCode = $review['questionnaire']['locale'];
$productSku = $review['product']['sku'];
$salesChannels = $salesChannels->filter(static function ($salesChannel) use ($review) {
/* @var $salesChannel TrustApiEntity */
return $salesChannel->getChannelId() …
Run Code Online (Sandbox Code Playgroud)