を使用して 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 から送信する方法はありますか?