アプリ版:「スタンプのみでお礼する」機能のリリースについて

Sever sent eventsを利用して、Phpからクライアントに1秒ごとにflushするコードを作成しようとしています。
Sleepを使用すると正常に動作せず困っています。

$i = 0;

while($i < 5){
echo “test”;
ob_flush();
flush();
$i++;
sleep(1);
}


このようなコードを組んだときに、sleep無しだと動くが、sleepがあると動かなくなると言った状態です。
どなたかお助け下さい_(┐「ε:)_

質問者からの補足コメント

  • うーん・・・

    Web上でphpを実行できるサービスを利用してテストしてみたところ、time out となってしまったため、sleepが原因でタイムアウトしているのかな、、と考えています。sleepはタイムアウトの時間に影響しないはずなんですが、、

      補足日時:2021/07/02 22:27

A 回答 (2件)

「504 Gateway Timeout」エラーになるのでは?



もしそうなら、サーバー環境の影響を受けています。

Apache (mod_php) 単独であれば、その記述でタイムアウトはしません。

「Apache + php-fpm」または「Nginx + php-fpm」の場合は、プロセス間で通信するので、そこで問題が起きるのでしょう。

下記ページの記述がヒントになりそうな予感がします。

https://living-sun.com/ja/php/654275-php-flush-t …
    • good
    • 1
この回答へのお礼

Flushするのに十分なデータ量がなかったようで、
最初に大量のダミーデータをエコーすることで解決しました!
タイムアウトしたと思い込んでいただけで、とてつもなく遅れてFlushされているようでした!

ご回答ありがとうございました!

お礼日時:2021/07/09 00:19

「echo “test”;」の全角のクォーテーションは半角にしてくださいね


テストした範囲ではうごいているみたいですよ
動かないという環境のブラウザやOSの種類やバージョンを提示して下さい
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!