亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? push.pm

?? 1. 記錄每個帖子的訪問人情況
?? PM
字號:
package CGI::Push;# See the bottom of this file for the POD documentation.  Search for the# string '=head'.# You can run this file through either pod2man or pod2html to produce pretty# documentation in manual or html file format (these utilities are part of the# Perl 5 distribution).# Copyright 1995-2000, Lincoln D. Stein.  All rights reserved.# It may be used and modified freely, but I do request that this copyright# notice remain attached to the file.  You may modify this module as you # wish, but if you redistribute a modified version, please attach a note# listing the modifications you have made.# The most recent version and complete docs are available at:#   http://stein.cshl.org/WWW/software/CGI/$CGI::Push::VERSION='1.04';use CGI;use CGI::Util 'rearrange';@ISA = ('CGI');$CGI::DefaultClass = 'CGI::Push';$CGI::Push::AutoloadClass = 'CGI';# add do_push() and push_delay() to exported tagspush(@{$CGI::EXPORT_TAGS{':standard'}},'do_push','push_delay');sub do_push {    my ($self,@p) = CGI::self_or_default(@_);    # unbuffer output    $| = 1;    srand;    my ($random) = sprintf("%08.0f",rand()*1E8);    my ($boundary) = "----=_NeXtPaRt$random";    my (@header);    my ($type,$callback,$delay,$last_page,$cookie,$target,$expires,$nph,@other) = rearrange([TYPE,NEXT_PAGE,DELAY,LAST_PAGE,[COOKIE,COOKIES],TARGET,EXPIRES,NPH],@p);    $type = 'text/html' unless $type;    $callback = \&simple_counter unless $callback && ref($callback) eq 'CODE';    $delay = 1 unless defined($delay);    $self->push_delay($delay);    $nph = 1 unless defined($nph);    my(@o);    foreach (@other) { push(@o,split("=")); }    push(@o,'-Target'=>$target) if defined($target);    push(@o,'-Cookie'=>$cookie) if defined($cookie);    push(@o,'-Type'=>"multipart/x-mixed-replace;boundary=\"$boundary\"");    push(@o,'-Server'=>"CGI.pm Push Module") if $nph;    push(@o,'-Status'=>'200 OK');    push(@o,'-nph'=>1) if $nph;    print $self->header(@o);    $boundary = "$CGI::CRLF--$boundary";    print "WARNING: YOUR BROWSER DOESN'T SUPPORT THIS SERVER-PUSH TECHNOLOGY.${boundary}$CGI::CRLF";    my (@contents) = &$callback($self,++$COUNTER);    # now we enter a little loop    while (1) {        print "Content-type: ${type}$CGI::CRLF$CGI::CRLF" unless $type =~ /^dynamic|heterogeneous$/i;        print @contents;        @contents = &$callback($self,++$COUNTER);        if ((@contents) && defined($contents[0])) {            print "${boundary}$CGI::CRLF";            do_sleep($self->push_delay()) if $self->push_delay();        } else {            if ($last_page && ref($last_page) eq 'CODE') {                print "${boundary}$CGI::CRLF";                do_sleep($self->push_delay()) if $self->push_delay();                print "Content-type: ${type}$CGI::CRLF$CGI::CRLF" unless $type =~ /^dynamic|heterogeneous$/i;                print  &$last_page($self,$COUNTER);            }            print "${boundary}--$CGI::CRLF";            last;        }    }    print "WARNING: YOUR BROWSER DOESN'T SUPPORT THIS SERVER-PUSH TECHNOLOGY.$CGI::CRLF";}sub simple_counter {    my ($self,$count) = @_;    return $self->start_html("CGI::Push Default Counter"),           $self->h1("CGI::Push Default Counter"),           "This page has been updated ",$self->strong($count)," times.",           $self->hr(),           $self->a({'-href'=>'http://www.genome.wi.mit.edu/ftp/pub/software/WWW/cgi_docs.html'},'CGI.pm home page'),           $self->end_html;}sub do_sleep {    my $delay = shift;    if ( ($delay >= 1) && ($delay!~/\./) ){        sleep($delay);    } else {        select(undef,undef,undef,$delay);    }}sub push_delay {    my ($self,$delay) = CGI::self_or_default(@_);    return defined($delay) ? $self->{'.delay'} =         $delay : $self->{'.delay'};}1;=head1 NAMECGI::Push - Simple Interface to Server Push=head1 SYNOPSIS    use CGI::Push qw(:standard);    do_push(-next_page=>\&next_page,            -last_page=>\&last_page,            -delay=>0.5);    sub next_page {        my($q,$counter) = @_;        return undef if $counter >= 10;        return start_html('Test'),               h1('Visible'),"\n",               "This page has been called ", strong($counter)," times",               end_html();    }    sub last_page {        my($q,$counter) = @_;        return start_html('Done'),               h1('Finished'),               strong($counter - 1),' iterations.',               end_html;    }=head1 DESCRIPTIONCGI::Push is a subclass of the CGI object created by CGI.pm.  It isspecialized for server push operations, which allow you to createanimated pages whose content changes at regular intervals.You provide CGI::Push with a pointer to a subroutine that will drawone page.  Every time your subroutine is called, it generates a newpage.  The contents of the page will be transmitted to the browserin such a way that it will replace what was there beforehand.  Thetechnique will work with HTML pages as well as with graphics files, allowing you to create animated GIFs.Only Netscape Navigator supports server push.  Internet Explorerbrowsers do not.=head1 USING CGI::PushCGI::Push adds one new method to the standard CGI suite, do_push().When you call this method, you pass it a reference to a subroutinethat is responsible for drawing each new page, an interval delay, andan optional subroutine for drawing the last page.  Other optionalparameters include most of those recognized by the CGI header()method.You may call do_push() in the object oriented manner or not, as youprefer:    use CGI::Push;    $q = new CGI::Push;    $q->do_push(-next_page=>\&draw_a_page);        -or-    use CGI::Push qw(:standard);    do_push(-next_page=>\&draw_a_page);Parameters are as follows:=over 4=item -next_page    do_push(-next_page=>\&my_draw_routine);This required parameter points to a reference to a subroutine responsible fordrawing each new page.  The subroutine should expect two parametersconsisting of the CGI object and a counter indicating the numberof times the subroutine has been called.  It should return thecontents of the page as an B<array> of one or more items to print.  It can return a false value (or an empty array) in order to abort theredrawing loop and print out the final page (if any)    sub my_draw_routine {        my($q,$counter) = @_;        return undef if $counter > 100;        return start_html('testing'),               h1('testing'),               "This page called $counter times";    }You are of course free to refer to create and use global variableswithin your draw routine in order to achieve special effects.=item -last_pageThis optional parameter points to a reference to the subroutineresponsible for drawing the last page of the series.  It is calledafter the -next_page routine returns a false value.  The subroutineitself should have exactly the same calling conventions as the-next_page routine.=item -typeThis optional parameter indicates the content type of each page.  Itdefaults to "text/html".  Normally the module assumes that each pageis of a homogenous MIME type.  However if you provide either of themagic values "heterogeneous" or "dynamic" (the latter provided for theconvenience of those who hate long parameter names), you can specifythe MIME type -- and other header fields -- on a per-page basis.  See "heterogeneous pages" for more details.=item -delayThis indicates the delay, in seconds, between frames.  Smaller delaysrefresh the page faster.  Fractional values are allowed.B<If not specified, -delay will default to 1 second>=item -cookie, -target, -expires, -nphThese have the same meaning as the like-named parameters inCGI::header().If not specified, -nph will default to 1 (as needed for many servers, see below).=back=head2 Heterogeneous PagesOrdinarily all pages displayed by CGI::Push share a common MIME type.However by providing a value of "heterogeneous" or "dynamic" in thedo_push() -type parameter, you can specify the MIME type of each pageon a case-by-case basis.  If you use this option, you will be responsible for producing theHTTP header for each page.  Simply modify your draw routine tolook like this:    sub my_draw_routine {        my($q,$counter) = @_;        return header('text/html'),   # note we're producing the header here               start_html('testing'),               h1('testing'),               "This page called $counter times";    }You can add any header fields that you like, but some (cookies andstatus fields included) may not be interpreted by the browser.  Oneinteresting effect is to display a series of pages, then, after thelast page, to redirect the browser to a new URL.  Because redirect() does b<not> work, the easiest way is with a -refresh header field,as shown below:    sub my_draw_routine {        my($q,$counter) = @_;        return undef if $counter > 10;        return header('text/html'),   # note we're producing the header here               start_html('testing'),               h1('testing'),               "This page called $counter times";    }    sub my_last_page {        return header(-refresh=>'5; URL=http://somewhere.else/finished.html',                      -type=>'text/html'),               start_html('Moved'),               h1('This is the last page'),               'Goodbye!'               hr,               end_html;     }=head2 Changing the Page Delay on the FlyIf you would like to control the delay between pages on a page-by-pagebasis, call push_delay() from within your draw routine.  push_delay()takes a single numeric argument representing the number of seconds youwish to delay after the current page is displayed and beforedisplaying the next one.  The delay may be fractional.  Withoutparameters, push_delay() just returns the current delay.=head1 INSTALLING CGI::Push SCRIPTSServer push scripts must be installed as no-parsed-header (NPH)scripts in order to work correctly on many servers.  On Unix systems,this is most often accomplished by prefixing the script's name with "nph-".  Recognition of NPH scripts happens automatically with WebSTAR and Microsoft IIS.  Users of other servers should see their documentationfor help.Apache web server from version 1.3b2 on does not need serverpush scripts installed as NPH scripts: the -nph parameter to do_push()may be set to a false value to disable the extra headers needed by anNPH script.=head1 AUTHOR INFORMATIONCopyright 1995-1998, Lincoln D. Stein.  All rights reserved.  This library is free software; you can redistribute it and/or modifyit under the same terms as Perl itself.Address bug reports and comments to: lstein@cshl.org=head1 BUGSThis section intentionally left blank.=head1 SEE ALSOL<CGI::Carp>, L<CGI>=cut

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久亚洲一区二区三区青草| 日韩精品一区二区三区蜜臀| 欧美日韩免费一区二区三区| 日韩精品一区二区三区四区视频| 国产喷白浆一区二区三区| 午夜精品在线视频一区| 成人小视频在线观看| 91精品国产综合久久精品app| 国产精品久久久久久久久免费桃花 | 久久久久久久久久美女| 亚洲最新视频在线观看| eeuss国产一区二区三区| 欧美精品一区二区久久久| 日韩1区2区3区| 欧美日本乱大交xxxxx| 亚洲欧洲成人精品av97| 国产精品一区二区在线观看网站| 91精品国产色综合久久ai换脸 | 亚洲综合色区另类av| 成人h动漫精品| 国产欧美精品一区二区三区四区| 日韩电影免费一区| 欧美三级视频在线观看| 亚洲免费观看高清完整 | 99国内精品久久| 国产校园另类小说区| 国内精品伊人久久久久av影院| 制服丝袜亚洲色图| 日韩高清欧美激情| 欧美三级在线视频| 亚洲第一福利一区| 欧美日韩在线观看一区二区 | 亚洲成人免费视| 欧洲亚洲精品在线| 亚洲一二三区视频在线观看| 欧美最猛性xxxxx直播| 亚洲一区二区影院| 欧美喷潮久久久xxxxx| 亚洲小少妇裸体bbw| 欧美日韩国产色站一区二区三区| 亚洲成人7777| 91精品国产综合久久久蜜臀粉嫩| 日本亚洲欧美天堂免费| 精品伦理精品一区| 国产乱人伦偷精品视频免下载| 久久影视一区二区| 成人综合在线观看| 亚洲猫色日本管| 欧美日韩美女一区二区| 免费不卡在线视频| 国产免费成人在线视频| 91丝袜高跟美女视频| 亚洲第一主播视频| 精品精品欲导航| 91精品国产91久久久久久一区二区| 婷婷国产v国产偷v亚洲高清| 精品国产百合女同互慰| 成人avav在线| 日韩精品欧美成人高清一区二区| 宅男噜噜噜66一区二区66| 国产麻豆成人精品| 亚洲综合在线视频| 日韩女优视频免费观看| 丁香婷婷综合激情五月色| 亚洲欧美日本韩国| 欧美成人一级视频| 99久久精品国产毛片| 日本色综合中文字幕| 国产精品福利一区| 91精品免费观看| 成人高清免费观看| 日本不卡视频一二三区| 国产精品亲子伦对白| 欧美日韩免费在线视频| 福利电影一区二区三区| 亚洲va国产天堂va久久en| 国产拍欧美日韩视频二区| 欧美日高清视频| 成人丝袜18视频在线观看| 亚洲韩国一区二区三区| 欧美激情综合在线| 日韩你懂的电影在线观看| 色诱亚洲精品久久久久久| 国产综合色视频| 午夜成人免费视频| 国产精品欧美久久久久无广告| 欧美精品在线观看一区二区| 成人激情图片网| 久草精品在线观看| 天天亚洲美女在线视频| 日韩伦理av电影| 久久久久久久久久久电影| 欧美电影影音先锋| 色婷婷久久久久swag精品| 麻豆精品视频在线| 五月婷婷综合网| 亚洲欧美日韩人成在线播放| 国产女同性恋一区二区| 亚洲同性gay激情无套| 欧美成人在线直播| 欧美一级欧美三级在线观看| 在线精品视频免费播放| 91一区二区三区在线播放| 国产一区二区在线看| 日韩在线一二三区| 日本在线不卡视频| 亚洲成人一区二区在线观看| 亚洲最大色网站| 亚洲激情av在线| 樱桃国产成人精品视频| 亚洲人xxxx| 亚洲欧美日韩国产另类专区| 亚洲色图20p| 亚洲精品一二三区| 日韩一区二区精品在线观看| 欧美精选一区二区| 欧美一区二区三区免费视频| 777色狠狠一区二区三区| 欧美日韩国产影片| 欧美电影在哪看比较好| 欧美精选在线播放| 精品少妇一区二区三区日产乱码 | 国产视频一区在线观看| 久久女同性恋中文字幕| 久久精品综合网| 中文无字幕一区二区三区| 国产精品传媒入口麻豆| 日韩毛片在线免费观看| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩大陆一区二区| 欧美日韩国产在线观看| 91精品国产91久久综合桃花| 日韩精品一区二区三区中文不卡| 久久网站热最新地址| 中文字幕欧美日本乱码一线二线 | 制服丝袜在线91| www国产成人免费观看视频 深夜成人网| 日韩美女一区二区三区| 久久久久九九视频| 一区二区三区中文在线| 日韩av一级片| 日韩美女视频一区二区在线观看| 91精品国产日韩91久久久久久| 精品女同一区二区| 中文字幕av在线一区二区三区| 亚洲欧美欧美一区二区三区| 日韩电影在线一区| 国产.欧美.日韩| 91极品视觉盛宴| 精品美女一区二区| 亚洲欧美激情在线| 免费看日韩a级影片| 成人福利视频在线看| 欧美日韩国产中文| 国产精品午夜在线| 午夜精品久久久久久久久久 | 日韩精品一级中文字幕精品视频免费观看| 美国精品在线观看| 99精品视频一区二区三区| 欧美人牲a欧美精品| 中文字幕精品三区| 日本中文在线一区| www.欧美色图| 亚洲精品一区二区三区香蕉 | 青娱乐精品在线视频| 成人av免费观看| 欧美成人精品3d动漫h| 亚洲乱码精品一二三四区日韩在线| 裸体歌舞表演一区二区| 色欧美日韩亚洲| 国产视频一区二区在线观看| 亚洲一二三专区| 成人夜色视频网站在线观看| **欧美大码日韩| 国产传媒久久文化传媒| 欧美日高清视频| 亚洲香蕉伊在人在线观| 成人黄色在线网站| 久久日韩粉嫩一区二区三区| 亚洲h在线观看| 91麻豆.com| 国产精品久久久久9999吃药| 国产在线播放一区三区四| 日韩一区二区三区免费看| 亚洲国产精品久久久久婷婷884| 成人午夜视频免费看| 国产亚洲欧美激情| 精品一区二区精品| 日韩一区二区免费视频| 日本不卡视频在线观看| 欧美久久一二区| 日日欢夜夜爽一区| 欧美日韩国产综合视频在线观看| 亚洲欧美日韩在线不卡| 99久免费精品视频在线观看| 中文字幕欧美三区| 99久久精品免费观看| 亚洲裸体在线观看| 91黄色在线观看| 亚洲午夜久久久久久久久电影网|