Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Как ускорить UPLOAD?


Автор: burakov 3.6.2011, 23:35
Добрый день, столкнулся с проблемой
медленного upload файлов на ФО. Ну медленного в сравнении с WEB загрузкой через сам файлообменник (время засекалось - медленнее в разы)
Скрипт всем известный из темы рядом smile.

ВОобще почему медленнее ? лечится ли это как то? в какую сторону смотреть?
Спасибо

Код

use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Request::Common qw($DYNAMIC_FILE_UPLOAD);
use Time::HiRes qw(gettimeofday);
$DYNAMIC_FILE_UPLOAD = 1;

my $ua = LWP::UserAgent->new(
    cookie_jar => HTTP::Cookies->new,
    agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16'
);
push (@{ $ua->requests_redirectable }, 'POST');

my $page = $ua->post(
    'http://www.filesonic.com/user/login',
    Content => ''
)->content;

index ($page, 'logout') != -1
    or die 'Login failed';
    
    
my ($act) = $page =~ m!<form(?=[^>]+?enctype="multipart/form-data")[^>]+?action="([^"]+)"!
    or die 'No action url';
    
my ($sess) = $ua->cookie_jar->as_string =~ 'PHPSESSID=([^;]+)';
$act .= "/?callbackUrl=http://www.filesonic.com/upload-completed/:uploadProgressId&X-Progress-ID=".
    'upload_'.substr(join('', gettimeofday()), 0, -3). '_' . $sess . '_' . int(rand(90000));

$page = $ua->post(
    $act,
    Content_Type => "form-data",
        Content => ['folderId' => 0, 'files[]' => ['select3.txt']]
)->content;

my ($link) = $page =~ /linkId"\s*:\s*"F(\d+)/
    or die 'No final link found';

print "http://www.filesonic.com/file/$link", "\n";





Автор: afiskon 4.6.2011, 14:59
Не думали, что ФО может ограничивать скорость загрузки? Или может у него просто канал забит?

Автор: burakov 5.6.2011, 21:59
Как не думал? конечно думал и эспериментировал. 
Делал так грузил скриптом два два файла по 60 Мбт (последовательно в один поток),
паралелльно этого запускал на файлсоник (ФО) загрузку через WEB Интерфейс 100 Мбт файла.

Закачка через WEB интерфейс файлсоник происходила в разы быстрее - ну то есть через файлсоник 100 Мбт файл уже загрузился - а через мой скрипт и еще минут 10 грузился первый 60 Мбт файл.
Понимаю, что хитрый ФО может резать скорость загрузки (но юзер из под которого я гружу - премиум - то есть вроде как везде ему зеленый свет (так эти ФО работают smile) - хотят чтобы все эти премиумы покупали.

Поэтому возник вопрос - может я программно еще НЕ ВСЕ реализовал, ? может существуют способы как то УСКОРИТЬ процесс загрузки файла на сервер? и какие это способы? (если они есть)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)