Тайм-аут Sdk Glacier php
После небольшого воспроизведения загрузки небольших тестовых файлов я хотел загрузить больший файл, около 200 МБ, но я всегда получал исключение тайм-аута, затем я попытался загрузить файл 30 МБ, и происходит то же самое. Я думаю, что время ожидания составляет 30 секунд, можно ли сказать клиенту ледника подождать, пока загрузка не будет завершена?
Это код, который я использую:
$glacier->uploadArchive(array(
'vaultName' => $vaultName,
'archiveDescription' => $desc
'body' => $body
));
Я проверил с другими файлами, и то же самое происходит, затем я попытался с небольшим файлом 4MB, и операция прошла успешно, я подумал, что разделение файлов и загрузка их по одному, но затем снова вокруг третьего приходит исключение тайм-аута из.
Я также попробовал мультизагрузку с помощью следующего кода
$glacier = GlacierClient::factory(array(
'key' => 'key',
'secret' => 'secret',
'region' => Region::US_WEST_2
));
$multiupload = $glacier->initiateMultipartUpload(array(
'vaultName' => 'vaultName',
'partSize' => '4194304'
));
// An array for the suffixes of the tar file
foreach($suffixes as $suffix){
$contents = file_get_contents('file.tar.gz'.$suffix);
$glacier->uploadMultipartPart(array(
'vaultName' => 'vaultName',
'uploadId' => $multiupload->get('uploadId'),
'body' => $contents
));
}
$result=$glacier->completeMultipartUpload(array(
'vaultName' => 'vaultName',
'uploadId' => $multiupload->get('uploadId'),
));
echo $result->get('archiveId');
Он пропускает параметр Range, я не думаю, что полностью понимаю, как работает эта многопартийная загрузка, но я думаю, что у меня будет то же исключение тайм-аута. Итак, мой вопрос, как я уже говорил. Можно ли сказать клиенту ледника дождаться окончания загрузки?
2 ответа
Это подозрительно похоже на тайм-аут сценария. Пытаться
set_time_limit (120);
только внутри цикла foreach. Это даст вам двухминутный таймер исправности PHP для каждого из ваших файлов, состоящих из нескольких частей.
Тайм-аут звучит как сценарий, как сказал Джимзи.
Что касается использования клиента Glacier, вам следует ознакомиться с этим сообщением в блоге из официального блога AWS PHP Developer Blog, в котором показано, как выполнять многоэтапную загрузку в Glacier с помощью UploadPartGenerator
объект. Если вы выполняете загрузку деталей в разных запросах / процессах, вы также должны помнить, что UploadPartGenerator
класс может быть сериализован.