После использования Sys::SigAction timeout_call для таймаутов из ответа в моем предыдущем вопрос (примечание: на этот раз я использую WWW::Mechanize вместо WWW::Mechanize::Timed), мои 60-секундные будильники работали правильно. И какое-то время я думал, что использую Crypt::SSLeay (Net::SSL) для SSL, но, посмотрев на него поближе, я понял, что код по какой-то причине использует Net::SSLeay (IO::Socket::SSL). Я думал, что WWW::Mechanize автоматически использует Crypt::SSLeay. Я заметил улучшение времени отклика (на 50% быстрее) для страниц SSL после того, как начал использовать Net::SSL. Но теперь мои 60-секундные тайм-ауты терпят неудачу, и время работы снова превышает 60 секунд! Если я уберу использование Net::SSL, то мои тайм-ауты Sys::SigAction (timeout_call) будут работать, но страницы SSL не будут загружаться так быстро. Итак, у меня есть два вопроса.
Предоставляет ли Crypt::SSLeay (Net::SSL) более быстрый алгоритм SSL, чем Net::SSLeay (IO::Socket:SSL)?
Как заставить мои тайм-ауты снова работать с Net::SSL? (Может быть, это компромисс, на который я должен решить?)
Код:
use Net::SSL
use WWW::Mechanize;
use HTTP::Cookies;
use Sys::SigAction qw(timeout_call);
use Time::HiRes qw(time); #also for use with sigaction?
my ($start_time, $end_time) = 0;
my $ua = WWW::Mechanize->new(
autocheck => 0, #turning off autocheck becuase any get errors will be fatal need to check for errors ourselves
ssl_opts => { verify_hostname => 0 } # if not set to 0 then Crypt::SSLeay will complain that it cant resolve hostnames
);
my $cookies = HTTP::Cookies->new(
autosave => 1
);
$ua->cookie_jar($cookies);
$ua->agent_alias("Windows IE 6");
if ( timeout_call( 60 ,sub { $start_time = time(); $ua->get('https://secure.site.com'); $end_time = time();} ))
{
print "index page timed out\n" ;
exit;
}
my $total_index_time = sprintf '%.3f', ($end_time - $start_time);
print "index load time: $total_index_time\n";
unless($ua->success){
print "Error: " . $ua->status;
exit;
}
...
модули, загруженные с использованием Net::SSL -
Склеп/SSLeay/CTX.pm
Склеп/SSLeay/X509.pm
Склеп/SSLeay.pm
Сеть/SSL.pm
Crypt/SSLeay/MainContext.pm
модули загружены без использования Net::SSL -
Сеть/SSLeay.pm
IO/Socket/SSL.pm
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/auto/Net/SSLeay/randomize.al
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/auto/Net/SSLeay/autosplit.ix