загрузить большой файл в облако с помощью php - PullRequest
2 голосов
/ 03 февраля 2011

Я пытаюсь загрузить большие файлы в облачное хранилище, используя Compass API: http://www.compasswebpublisher.com/php/rackspace-cloudfiles-php-api

Это нормально работает для небольших файлов (jpg), но когда размер файла превышает 100 МБ, происходит сбой сценария.Ну, если быть точным, сценарий просто останавливается.

$cf = new Compass_Service_Rackspace_Cloudfiles('myid', 'myApiKey', Compass_Service_Rackspace_Cloudfiles::UK_AUTHURL);
$cf->auth();
set_time_limit(60*60);
ini_set("memory_limit","256M");
ini_set('upload_max_filesize', '700M');
ini_set('post_max_size', '700M');
$contents = file_get_contents($path);
$cf->putObject('container/filename', $contents);

В первый раз я думал, что это была проблема с памятью, но даже с 256M сценарий не работает.почему он не работает?

Большое спасибо!

С уважением, Pv

Ответы [ 3 ]

2 голосов
/ 03 февраля 2011

Я не уверен, какой скрипт вы пытаетесь использовать, но он, вероятно, дает сбой из-за тайм-аута скрипта, если не позаботиться о нем.

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

0 голосов
/ 10 сентября 2013

Вы можете использовать облачный API raskcpace для отправки файлов в облачные файлы rackspace.

Рабочий процесс для загрузки файлов будет

  1. Сначала загрузите файлы на свой сервер.
  2. Отправка файла в контейнер файлов облака RackSpace с веб-сервера
  3. Удалите файл с вашего веб-сервера или оставьте его на ваше усмотрение.

Вы можете использовать PHP input: // stream и XMLHttpRequest для загрузки файлов кусками на ваш веб-сервер. Больше информации здесь http://www.webiny.com/blog/2012/05/07/webiny-file-upload-with-html5-and-ajax-using-php-streams/

Вы можете найти API стойки в https://github.com/rackspace/php-opencloud

0 голосов
/ 03 июня 2012

В качестве первого решения я бы порекомендовал вам передать функцию 0 set_time_limit, потому что она сделает скрипт способным работать до конца без таймаута.

В качестве второго решения я бы порекомендовал вам использовать библиотеку plupload для внешнего интерфейса, которая позволит вам загружать файлы по частям. Подробнее об этом здесь http://www.plupload.com/

...