где находится IO/Socket/SSL.pm ???
пропишите путь к IO...
use lib 'G:/Program Files/Perl/site'; # путь к IO т.е. G:/Program Files/Perl/site/IO/Socket/SSL.pm use IO::Socket;
NasMnogo-Mbl-Sila, это зависит от того что ты хочешь написать...!!
ты можешь писать свои скрипты на perl в слиле java или бейзик!
сложные и средние алгоримты, конечно не сможешь быстро научиться за 21 день
короче, можешь любой выучить, или 2 ЯП одновременно (например, php и perl, или другие)
Программист - это человекообразный интерфейс между хотелками бизнесменов и возможностями компьютеров. ©
вот эта девка на perl программирует :D
кто хочет 125k$? :D
brainfuck .
Himiko, ты спрашиваешь про любой все возможнный дата центр? :)
или чтобы порекомендовали?
ну вот один проект тут сидит http://www.fdcservers.net/virtual_servers.php и тут advancedhosters.com
на проекте почти 10млн больших файликов :)
точно таких же как fdcservers.net еще много
на счет оплаты я не понмю...
ну в гугле нормально есть по запросу "кластерный хостинг"
http://www.google.com.ua/search?q=%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D0%B9+%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3&hl=ru&prmd=iv&ei=ufP-TNGqEIS38QPF7YyNCw&start=0&sa=N
в большой компании, руководство может поднять рассмотреть такой вопрос в качестве иновационного решения :)
netwind, точно не могу сказать, можно попробовать sleep (или как-то еще) и использовать бд, записывать туда кто начинает скачать и кто скачал...
nginx работает как демон, имеет встреонный perl и загружет динамически код, заблокировать не должен, начинает отдать файл после выполнения handler, хотя точно не знаю как будет...
в любом случае можно поставить максимально количество скачиваний в очереде, очередь в миллион скачиваний же не будет?
думаю, что можно на ipfw сделать...
/* * Copyright (C) Igor Sysoev */ #ifndef _NGX_HTTP_PERL_MODULE_H_INCLUDED_ #define _NGX_HTTP_PERL_MODULE_H_INCLUDED_ #include <ngx_config.h> #include <ngx_core.h> #include <ngx_http.h> #include <nginx.h> #include <EXTERN.h> #include <perl.h> typedef ngx_http_request_t *nginx; typedef struct { ngx_str_t filename; ngx_str_t redirect_uri; ngx_str_t redirect_args; SV *next; ngx_uint_t done; /* unsigned done:1; */ ngx_array_t *variables; /* array of ngx_http_perl_var_t */ #if (NGX_HTTP_SSI) ngx_http_ssi_ctx_t *ssi; #endif } ngx_http_perl_ctx_t; typedef struct { ngx_uint_t hash; ngx_str_t name; ngx_str_t value; } ngx_http_perl_var_t; extern ngx_module_t ngx_http_perl_module; /* * workaround for "unused variable `Perl___notused'" warning * when building with perl 5.6.1 */ #ifndef PERL_IMPLICIT_CONTEXT #undef dTHXa #define dTHXa(a) #endif extern void boot_DynaLoader(pTHX_ CV* cv); void ngx_http_perl_handle_request(ngx_http_request_t *r); void ngx_http_perl_sleep_handler(ngx_http_request_t *r); #endif /* _NGX_HTTP_PERL_MODULE_H_INCLUDED_ */
тут вот еще какой-то timedout, ну попробовать можно... :)
void ngx_http_perl_sleep_handler(ngx_http_request_t *r) { ngx_event_t *wev; ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "perl sleep handler"); wev = r->connection->write; if (wev->timedout) { wev->timedout = 0; ngx_http_perl_handle_request(r); return; } if (ngx_handle_write_event(wev, 0) != NGX_OK) { ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR); } }
понятно, тут скоре всего если серверов будет 10-20-30 штук, то может будет выгода, а если 2-3-4, то разница минимальная...
если нельзя через опции встроенные, то думаю что можно через API...
перед тем как отдается файлы можно сделать какие действия, наприер, на паузу поставить и т.д.
package download; use strict; use nginx; use Crypt::HCE_MD5; my $dl_key = "re2lgr5"; my $upload_dir="/home/file/cgi-bin/uploads"; sub handler { my $r = shift; my $hce = Crypt::HCE_MD5->new($dl_key,"XFile"); ($_) = $r->filename=~/\/(\w+)\/[^\/]+$/; my $l; tr|a-z2-7|\0-\37|; $_=unpack('B*',$_); s/000(.....)/$1/g; $l=length; $_=substr($_,0,$l & ~7) if $l & 7; $_=pack('B*',$_); my ($srv_id,$file_id,$usr_id,$dx,$id,$dmode,$i1,$i2,$i3,$i4,$expire) = unpack("SLLSA12AC4L", $hce->hce_block_decrypt($_) ); $dx=sprintf("%05d",$dx); if($r->remote_addr !~ /^$i1\.$i2\./) { $r->internal_redirect("/error_wrong_ip.html"); } elsif($expire<time) { $r->internal_redirect("/error_expired.html"); } elsif(!-f "$upload_dir/$dx/$id") { $r->internal_redirect("/error_nofile.html"); } else { $r->header_out("Content-Disposition","attachment"); $r->internal_redirect("/download_$dmode/$dx/$id?id=$file_id&usr=$usr_id".$r->args); } return OK; } 1;
location /d/ { perl download::handler; }
gdb
дамп отлаки можно посмотереть, если оно включено...