У меня есть сценарий, который генерирует множество файлов XML и загружает их один за другим в S3 с помощью этого базового кода:
$this->awsFactory->getS3Client()->putObject([
'Bucket' => $bucketName,
'Key' => $key,
'Body' => $xml,
'ACL' => 'public-read',
'@http' => [
'progress' => function ($expectedDl, $dl, $expectedUl, $ul) {
printf(
"%s/%s uploaded.\n",
$ul,
$expectedUl
);
}
]
]);
(Я добавил обратный вызов из-за своей проблемы)
Иногда случайным образом загрузка останавливается и никогда не истекает. Иногда он перезапускается через несколько минут, иногда нет. Это может произойти после 60 файлов или после более чем 150 файлов, совершенно случайно
Вот пример обратного вызова:
0/0 uploaded.
0/2128256 uploaded.
16384/2128256 uploaded.
16384/2128256 uploaded.
32768/2128256 uploaded.
32768/2128256 uploaded.
49152/2128256 uploaded.
// ...
// (it start normally)
// And at a moment, the upload stop send datas
// ...
1048576/2128256 uploaded.
1064960/2128256 uploaded.
1064960/2128256 uploaded.
1081344/2128256 uploaded.
1081344/2128256 uploaded.
1097728/2128256 uploaded.
1097728/2128256 uploaded.
1097728/2128256 uploaded.
1097728/2128256 uploaded.
1097728/2128256 uploaded.
1097728/2128256 uploaded.
1097728/2128256 uploaded.
1097728/2128256 uploaded.
1097728/2128256 uploaded.
// ...
он застрял на 1097728/2128256, и я получил тысячи одинаковых строк
Есть идеи о том, что случилось?
Спасибо за помощь :)
Память слежу, она всего на 63.1Мб. Длина строки $ xml составляет примерно 2100000 символов каждая.
Полный код - это приложение Symfony, xml визуализируется с помощью Twig
вы пробовали использовать обещание? docs.aws.amazon.com/sdk-for-php/v3/developer-guide/…






какой полный код? как вы генерируете xml? может быть проблема с памятью из-за того, что не освобождаются большие переменные $ xml?