CGI autoflush in Window

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Herman Chan

    CGI autoflush in Window

    Hi:

    I have the following script

    =============== =============== ============

    #!D:/Perl/bin/Perl.exe -w

    use strict;
    use CGI ":standard" ;
    $| = 1;

    my $MYFILE = "D:\\Apache\\lo gs\\mgmtwrkstn\ \lucky.txt";

    if (param("monitor ")) {
    &monitor();
    } else {
    if (fork) { # only need to fork for IE
    print redirect(-uri => url() . "?monitor=y es",
    -nph=>1);
    } else {
    &do_stuff();
    }
    sub monitor
    {
    my $html = &draw_page() ;

    if (defined $html) {
    print header(-refresh=>1, -nph=>1), $html;
    } else {
    print header(-nph=>1), &goodbye();
    }
    }
    sub goodbye
    {
    return start_html(-title=>"Goodbye !") . h1("Goodbye!") .
    end_html();
    }
    sub get_number
    {
    open NUMBER, "<$MYFILE" or return undef;
    my $number = @glo;
    close NUMBER;

    return $number;
    }
    sub draw_page
    {
    my $number = &get_number( );

    return (defined $number) ? start_html(-title=>"Your Lucky
    Number") . p("Your lucky number is $number.") . end_html() : undef;
    }

    sub do_stuff
    {
    for my $i (1 .. 10)
    {
    open NUMBER2, ">$MYFILE";
    print NUMBER2 $i;
    close NUMBER2;


    sleep 1;
    }

    unlink $MYFILE;
    }

    =============== =============== =============== ============

    What this script essentially do is that it forks a child process to
    write 1 to 10 on some file, while writing it, the parent process will
    refresh the page every second to read the content of that file. This
    script is orginally from


    It works under Unix environment with apache. However, when I run this
    script in W2K and apache 1.3.x. It doesn't work. It seems like that
    the child process is locking the files its writing to and the parent
    process can't go into it(even with autoflush on). Therefore, the
    parent process doesn't refresh the page until the child process unlink
    ("delete") the file. Can anyone help me on this one? I am a newbie on
    Perl and CGI and I want to continuosly monitor some background job on
    a web page.

    Thanks
    Herman
Working...