Тайм-аут php Sdk Glacier

после того, как я немного поиграл и загрузил несколько небольших тестовых файлов, я хотел загрузить файл большего размера, около 200 МБ, но я всегда получаю исключение тайм-аута, затем я попытался загрузить файл размером 30 МБ, и происходит то же самое. Я думаю, что тайм-аут составляет 30 секунд, можно ли сказать клиенту glacier подождать, пока загрузка не будет завершена?

Это код, который я использую:

$glacier->uploadArchive(array(
            'vaultName'          => $vaultName,
            'archiveDescription' => $desc
            'body'               => $body
        ));

Пробовал с другими файлами и тоже самое происходит, потом пробовал с маленьким файлом 4Мб и операция прошла успешно, думал что делить файлы и заливать их по одному, но потом опять около третьего приходит исключение таймаута вне.

Я также попробовал мультизагрузку со следующим кодом

$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, я не думаю, что полностью понимаю, как работает эта многокомпонентная загрузка, но я думаю, что у меня будет такое же исключение тайм-аута. Итак, мой вопрос, как я уже сказал. Можно ли сказать клиенту glacier подождать, пока загрузка не будет завершена?


person Zertalx    schedule 11.12.2012    source источник


Ответы (2)


Это подозрительно похоже на тайм-аут скрипта. Пытаться

set_time_limit (120);

только внутри цикла foreach. Это даст вам двухминутный таймер работоспособности PHP для каждого из ваших файлов, состоящих из нескольких частей.

person Jimzie    schedule 16.12.2012

Тайм-аут звучит как тайм-аут сценария, как сказал Джимзи.

Что касается использования клиента Glacier, вам следует проверить эта запись в официальном блоге разработчиков AWS PHP, в которой показано, как выполнять многокомпонентную загрузку в Glacier с помощью объекта UploadPartGenerator. Если вы выполняете загрузку частей в разных запросах/процессах, вы также должны помнить, что класс UploadPartGenerator может быть сериализован.

person Jeremy Lindblom    schedule 22.08.2013