1

を使用して Apache/PHP を実行する別のサーバー (B) を要求する Apache/PHP を実行する「プロキシ」サーバー (A) がありますfile_get_contents。ユーザーがサーバー A を要求すると、サーバー B が要求されます。サーバー B での要求は完了するまでに最大 2 分かかるため、待機中のアニメーションに続いて PHPflush()の sth が非常に早く応答します。このような:

User       --->   Server A (a.php)             --->   Server B (b.php)
                  - file_get_contents to B            - flush after 1s
                  - nothing happens after 1s          - response end after 2m 
waits 2m   <---   

私が今抱えている問題は、B からのこの初期のフラッシュが A によって「ミラーリング」されていないことです。そのため、ユーザーは最終的な応答が表示されるまで完全に待機する必要があります。サーバー B を直接呼び出すと、1 秒後に待機中のアニメーションが表示されます。

「a.php」の最小限のサンプル コード:

<?php
$stream_context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded'
    )
));

echo file_get_contents('http://1.2.3.4/b.php', false, $stream_context);
?>

「b.php」の最小限のサンプル コード:

<?php
echo 'Loading...';
flush();

// Long operation
sleep(60);

echo 'Result';
?>

Q: サーバー A がサーバー B から初期状態を「ミラーリング」しflush、正確にフラッシュされた結果をサーバー B から送信する方法はありますか?

4

1 に答える 1