0

pcntl を使用して PHP で bigpipe を実装したいと考えています。しかし、ブラウザから Web ページにアクセスすると何か問題があります。

test.php

<html>
    <head>
<script type="text/javascript">
    function fill(id,content){ document.getElementById(id).innerHTML=content; }
</script>
    </head>
    <body>
        <div id="1">loading...</div>
        <div id="2">loading...</div>    
<?php
    $pids = array();
    $pids[0] = pcntl_fork();
    if($pids[0]==-1){
        die("failed to fork\n");
    }else if($pids[0] == 0){//child
        sleep(1);
        echo "<script type=\"text/javascript\">fill(\"1\",\"im txx\");</script>\n";
        exit(0);
    }else if($pids[0] > 0){//father
        $pids[1] = pcntl_fork();
        if($pids[1]==-1){
            die("failed to fork\n");
        }else if($pids[1] == 0){//child
            echo "<script type=\"text/javascript\">fill(\"2\",\"im txx!\");</script>\n";
            exit(0);
        }else if($pids[1] >0){//father
            while(pcntl_wait($status)!=-1);
        }
    }
?>
    </body>
</html>

シェルでコマンド「php test.php」を入力すると、正しい出力が得られます。

<html>
        <head>
<script type="text/javascript">
        function fill(id,content){ document.getElementById(id).innerHTML=content; }
</script>
        </head>
        <body>
                <div id="1">loading...</div>
                <div id="2">loading...</div>
<script type="text/javascript">fill("2","im txx!");</script>
<script type="text/javascript">fill("1","im txx");</script>
        </body>
</html>

しかし、ブラウザーでアクセスすると、ページのソースは予期しないものです。

<html>
    <head>
<script type="text/javascript">
    function fill(id,content){ document.getElementById(id).innerHTML=content; }
</script>
    </head>
    <body>
        <div id="1">loading...</div>
        <div id="2">loading...</div>    
<script type="text/javascript">fill("2","im txx!");</script>

残りのコードが消えたのはなぜですか?

4

1 に答える 1

0

印刷後に終了します:

exit(0);

これにより、このポイントを超えるコードのすべての実行が停止します

exit()コマンドを削除します

于 2012-07-09T15:27:40.463 に答える