Тайм-аут 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 класс может быть сериализован.

Другие вопросы по тегам