Changeset 24752
- Timestamp:
- 11/24/08 22:30:35 (4 years ago)
- Files:
-
- 1 modified
-
lang/perl/MENTA/trunk/bin/cgi-server.pl (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/MENTA/trunk/bin/cgi-server.pl
r24233 r24752 41 41 } 42 42 43 sub HTTP::Response::cgish_filter { 44 my $self = shift; 45 if (my $status = $self->header('Status')) { 46 $self->code($status); 47 $self->message(HTTP::Status::status_message($status)); 48 } 49 $self; 50 } 51 52 43 53 { 44 54 package MENTA::Server; 45 55 use base qw/HTTP::Server::Simple::CGI/; 56 use Time::HiRes (); 46 57 47 58 sub bind_stdout { … … 55 66 } 56 67 68 sub stopwatch { 69 my $code = shift; 70 my $start = [Time::HiRes::gettimeofday()]; 71 $code->(); 72 my $elapsed = Time::HiRes::tv_interval($start); 73 if ($elapsed > 0.3) { 74 print STDERR "TOO SLOW: $ENV{PATH_INFO}: $elapsed\n"; 75 } 76 } 77 57 78 sub handler { 58 79 my $pid = fork(); … … 60 81 waitpid($pid, POSIX::WNOHANG); 61 82 } elsif ($pid == 0) { 62 my $out = bind_stdout(sub { 63 package main; 64 do './menta.cgi'; 65 die $@ if $@; 83 stopwatch(sub { 84 my $out = bind_stdout(sub { 85 package main; 86 do './menta.cgi'; 87 die $@ if $@; 88 }); 89 print HTTP::Response->parse("HTTP/1.0 200 OK\r\n$out") 90 ->cgish_filter() 91 ->as_string(); 66 92 }); 67 my $res = HTTP::Response->parse("HTTP/1.0 200 OK\r\n$out");68 if (my $status = $res->header('Status')) {69 $res->code($status);70 $res->message(HTTP::Status::status_message($status));71 }72 print $res->as_string;73 93 exit; 74 } els if (defined $pid){75 die $!;94 } else { 95 die "cannot fork : $!"; 76 96 } 77 97 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)