[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка файла через морду сайта на другой сервер
zeromind
Интересует данная реализация, есть форма загрузки файлов на VPS, где расположены только PHP страницы без контента, нужно загружать через эту форму файлы, которые будут сохранятся на другом отдельном выделенном или VPS сервере..

как это сделать ?



Спустя 1 час, 27 минут, 48 секунд (11.06.2012 - 14:37) twin написал(а):
Курлом

Спустя 14 минут, 38 секунд (11.06.2012 - 14:51) zeromind написал(а):
вот с курлом ещё и не работал) а вообще как это будет выглядить?
данные POSTом будут грузится?

Спустя 30 минут, 41 секунда (11.06.2012 - 15:22) killer8080 написал(а):
zeromind
отправить файл можно как угодно, хоть курлом, хоть через сокеты, хоть через file_get_contents(). Но через курл удобней, собственно для подобных вещей он и предназначен. Читай статью по ссылке
http://www.web-junior.net/otpravka-post-za...pravka-fajjlov/

Спустя 7 минут, 2 секунды (11.06.2012 - 15:29) vagrand написал(а):
zeromind
ИМХО будет легче настроить rsync

Спустя 26 секунд (11.06.2012 - 15:30) twin написал(а):
killer8080
Цитата
хоть через file_get_contents()
можно с этого места поподробнее?

Спустя 1 минута, 27 секунд (11.06.2012 - 15:31) killer8080 написал(а):
Цитата (twin @ 11.06.2012 - 15:30)
можно с этого места поподробнее?

Через контекст, в той статье есть пример.

Спустя 2 минуты, 37 секунд (11.06.2012 - 15:34) twin написал(а):
Цитата (vagrand @ 11.06.2012 - 12:29)
zeromind
ИМХО будет легче настроить rsync

если свой сервер. Не думаю, что это тот случай.


Вот такая была как-то функция. Пути только внимательно:
/**
*
@param $img - полный путь до файла
*/

function fileCuplUpload($img)
{
$ext = pathinfo($img, PATHINFO_EXTENSION);
$ext = str_replace('jpg', 'jpeg', $ext);
$data = array('uploader' => '@'. $img .';type=image/'. $ext);
$curl = curl_init();
// Путь до приемника
curl_setopt($curl, CURLOPT_URL, 'http://site.ru/upload.php');
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_exec($curl);
$info = curl_getinfo($curl);
curl_close($curl);
return $info;
}

Спустя 2 минуты, 11 секунд (11.06.2012 - 15:36) twin написал(а):
Цитата (killer8080 @ 11.06.2012 - 12:31)
Цитата (twin @ 11.06.2012 - 15:30)
можно с этого места поподробнее?

Через контекст, в той статье есть пример.

Спасибо))) Это откровение для меня.

Спустя 4 минуты, 13 секунд (11.06.2012 - 15:40) killer8080 написал(а):
twin
честно говоря этот способ особого смысла не имеет. По объему кода он не меньше чем вариант с сокетами. Предпочтительней конечно курл. Это я просто, как возможный способ упомянул. smile.gif

Спустя 7 минут, 15 секунд (11.06.2012 - 15:47) vagrand написал(а):
Через php конечно выйдет более универсально, но тут еще большой вопрос в том, а какого размера ожидаются файлы. Если это будет видео или большие архивы, то думаю что нагнется сервачек передавать их посредством php.
Если картинки или текст еще туда-сюда, хотя при больших объемах тоже не зер гуд.

Спустя 1 минута, 38 секунд (11.06.2012 - 15:49) killer8080 написал(а):
Цитата (vagrand @ 11.06.2012 - 15:47)
Если это будет видео или большие архивы, то думаю что нагнется сервачек передавать их посредством php.

С чего бы это?

Спустя 14 минут, 16 секунд (11.06.2012 - 16:03) vagrand написал(а):
Цитата
С чего бы это?


php скрипт будет запущен на протяжении всего времени, которое потребуется для передачи файла. Т.е. если файл будет большим + большие объемы файлов, то одновременно будет запущено много копий скрипта + к этому, я не уверен но надо еще последить за расходом памяти при отправке файла из php скрипта.

Спустя 43 минуты, 34 секунды (11.06.2012 - 16:47) killer8080 написал(а):
Цитата (vagrand @ 11.06.2012 - 16:03)
Т.е. если файл будет большим + большие объемы файлов, то одновременно будет запущено много копий скрипта + к этому, я не уверен но надо еще последить за расходом памяти при отправке файла из php скрипта.


Тут все будет зависеть от количества оперативы на сервере, и числа одновременных запросов. Естественно, что скрипт должен быть написан по уму. Если отправка идет через сокеты, то нужно файл читать прямо в сокет, в цикле, а не в переменную, а потом в сокет, как часто делают. В случае с курлом, думаю этот момент учтен на уровне самой библиотеки.

Спустя 4 минуты, 43 секунды (11.06.2012 - 16:51) vagrand написал(а):
killer8080

Ну так я про это и пишу, что не достаточно входных данных что бы сделать грамотный и всесторонний анализ. Что касается про много оперативы - ТС пишет что это все будет на VPS, вряд ли там ее будет много.

Цитата
Естественно, что скрипт должен быть написан по уму. Если отправка идет через сокеты, то нужно файл читать прямо в сокет, в цикле, а не в переменную, а потом в сокет, как часто делают.


Пусть так, но скрипт то все равно будет висеть в памяти все то время, что файл будет пересылаться, т.е. полюбе будет жрать ресурс сервака. А количество чилдов пача это вещь ограниченная.

Спустя 46 минут, 5 секунд (11.06.2012 - 17:38) zeromind написал(а):
Цитата (vagrand @ 11.06.2012 - 16:51)
killer8080

Ну так я про это и пишу, что не достаточно входных данных что бы сделать грамотный и всесторонний анализ. Что касается про много оперативы - ТС пишет что это все будет на VPS, вряд ли там ее будет много.

Цитата
Естественно, что скрипт должен быть написан по уму. Если отправка идет через сокеты, то нужно файл читать прямо в сокет, в цикле, а не в переменную, а потом в сокет, как часто делают.


Пусть так, но скрипт то все равно будет висеть в памяти все то время, что файл будет пересылаться, т.е. полюбе будет жрать ресурс сервака. А количество чилдов пача это вещь ограниченная.

вы правы данные будут большими возможно даже до полтора гигабайта..
смысл такой - загружаеш через форму фильм, происходит определенная логика (парсится инфа по загруженности серверов) выбирается оптимальный сервер и ему передается POST'ом файл..

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

Спустя 12 минут, 28 секунд (11.06.2012 - 17:50) vagrand написал(а):
Цитата
происходит определенная логика (парсится инфа по загруженности серверов) выбирается оптимальный сервер и ему передается POST'ом файл..


А может имеет смысл тогда определять загруженность серверов до загрузки файла и редиректить клиента на загрузчик, который будет располагаться именно на том сервере, который был выбран?

Спустя 3 минуты, 15 секунд (11.06.2012 - 17:53) Семён написал(а):
Поддерживаю вариант rsync - и по расписанию 1-10-15 минут синхронизировать файлы.

Спустя 4 минуты, 1 секунда (11.06.2012 - 17:57) vagrand написал(а):
Семён

Не вижу никакого в этом смысла, надо просто разнести загрузчики по серверам, на которых будут хранится файлы, а на основном только определять их загруженность.

Спустя 8 минут, 49 секунд (11.06.2012 - 18:06) Семён написал(а):
Цитата (vagrand @ 11.06.2012 - 18:57)
Семён

Не вижу никакого в этом смысла, надо просто разнести загрузчики по серверам, на которых будут хранится файлы, а на основном только определять их загруженность.

Ага особенно если VPS на разных хостингах находятся.
---- Идеальный способ в фоне через какой-нить флеш загрузчик просто отправлять нужные файлы на внешний хост в виде какого-нить API c crossdomain.xml напрямую без всяких проверок на загруженность

Спустя 11 минут, 24 секунды (11.06.2012 - 18:17) vagrand написал(а):
Цитата
Ага особенно если VPS на разных хостингах находятся.


А при чем тут разные хостинги или это один и тот же? Домен сервака надо знать и все, больше ничего.

Спустя 2 часа, 51 минута, 11 секунд (11.06.2012 - 21:09) Семён написал(а):
Загрузчики по разным серверам, которые выступают в качестве проксирующего загрузчика как ты предлагаешь - является говнокодом)

Спустя 7 минут, 27 секунд (11.06.2012 - 21:16) vagrand написал(а):
Цитата
является говнокодом)


А не сильно ли крутоватое заявление? Оно нуждается в такой же крутой аргументации. Как по мне то пересылать гиговые файлы при помощи php является говнокодом

Спустя 22 минуты, 38 секунд (11.06.2012 - 21:39) Семён написал(а):
Мы говорим об одном и томже
Либо ты просто хочешь поспорить
Цитата
которые выступают в качестве проксирующего загрузчика как ты предлагаешь - является говнокодом)

Цитата
Как по мне то пересылать гиговые файлы при помощи php является говнокодом

Спустя 45 минут, 45 секунд (11.06.2012 - 22:24) vagrand написал(а):
Ты предлагаешь загружать файл на центральный сервер а с него разносить файлы по серверам хранилищам, что нагружает серваки и сеть ровно в 2-а раза от нужного, а я предлагаю заливать сразу на тот сервер, где файлы будут хранится.

Спустя 46 минут, 49 секунд (11.06.2012 - 23:11) Семён написал(а):
Цитата (vagrand @ 11.06.2012 - 23:24)
Ты предлагаешь загружать файл на центральный сервер а с него разносить файлы по серверам хранилищам, что нагружает серваки и сеть ровно в 2-а раза от нужного, а я предлагаю заливать сразу на тот сервер, где файлы будут хранится.

Цитата
Ага особенно если VPS на разных хостингах находятся.
---- Идеальный способ в фоне через какой-нить флеш загрузчик просто отправлять нужные файлы на внешний хост в виде какого-нить API c crossdomain.xml напрямую без всяких проверок на загруженность


Перечитай

Спустя 10 часов, 44 минуты (12.06.2012 - 09:55) vagrand написал(а):
Цитата
Загрузчики по разным серверам, которые выступают в качестве проксирующего загрузчика как ты предлагаешь - является говнокодом)


Цитата
Ага особенно если VPS на разных хостингах находятся.
---- Идеальный способ в фоне через какой-нить флеш загрузчик просто отправлять нужные файлы на внешний хост в виде какого-нить API c crossdomain.xml напрямую без всяких проверок на загруженность


Слышал когда нибудь про балансировку нагрузки? Вот там люди почему-то не считают такое говнокодом.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.