問題タブ [ob-start]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - ブラウザがすぐにページを表示するように、送信が終了したことをクライアントに適切に伝える方法は?
皆さん、こんにちは。
私は自分のphpフレームワークに取り組んでいます。これは、php のヘッダー、クッキー、およびバッファー機能をラッパーする応答マネージャーを備えています。これを使用して、結果ページをユーザーに送信します。
ただし、ob_start -> ob_end_flush -> flush を使用してページ ヘッダーとコンテンツが既に送信されていても、ブラウザは依然としてハングし、スクリプトが完了するのを待ちます。
現在のユーザーのセッションを更新したり、メールを送信したり、何かをアップロードしたりするなど、遅い仕事をしたいときに問題が発生します。ヘッダーを含むページ全体が既にある場合でも、ユーザーはすべてが完了するまで待つ必要があります。
私が知りたいのは、ページが完全に読み込まれたことをブラウザに知らせる方法で、今すぐページを表示できるようにすることです。
ありがとうございました!
/////////////////////////// 放棄されたソリューション //////////////////// ////////
放棄されたソリューション 1
過去に、私は通常、ob_start -> ob_end_flush -> ob_flush -> flush の組み合わせを使用してこの問題を修正しました。次のようになります。
しかし、ob_flush は「フラッシュするバッファがありません」という E_NOTICE をスローします。この E_NOTICE をミュートするだけでこれを修正したくありません (実際、私のフレームワークでは、エラーをミュートする方法はありません)。したがって、これはこの問題を解決する方法ではありません。
放棄されたソリューション 2
また、コンテンツが送信された後に接続を閉じようとします。コードは次のようになります。
エラーなしで問題を解決できますが、別の問題が発生します。ページを受信した後にクライアントの接続が閉じられ、別のページを開くには再接続する必要があるようです。これにより、ネットワークに余分な負荷が発生します。
放棄されたソリューション 3
ええ、何人かの人が私に fastcgi を使うように勧めてくれました。そして fastcgi_finish_request(); しかし、環境間でコードの互換性を高めたいので、実際にはオプションではありません。
php - 二重引用符で囲まれた PHP OB_START
私はphp on_startとob_get_contentsを使用してhtmlをエコーし、変数に保存しています。ただし、json エンコードして出力を確認すると、文字列全体が出力されません。誰かが私が間違っていることを指摘するのを助けることができますか
JSONエンコード出力で終了アンカータグのみを取得します
php - ob_start と ob_end_flush を使用して CSS をグローバル ファイルに含めます。
globals.php
サイトのすべてのファイルにファイルが含まれています。CSS
このファイルにファイルを含めたいと思いますglobals.css
。
問題は、CSS を追加しglobals.php
てすべてのファイルに含めると、次のようなエラーが発生することです。
または使用するとき
ob_start
同じファイルの先頭globals.php
と末尾で使用するよりも適切な解決策はありob_end_flush
ますか、またはこの方法は正しい操作方法ですか?
globals.php
php - CodeIgniter 関数で繰り返しコードを削除する
CodeIgniter を使用して、いくつかの内部関数をラップし、結果を json で表示しています。
時折、内部関数のデバッグ文字列が画面に表示されることがあります。そのため、出力バッファリングを使用してデバッグをキャプチャし、これを結果に追加することを開始しました$data['response']['debug'] = $ob;
このコードを公に公開されているほとんどの CI 関数にドロップし始めたため、これはかなりうまく機能しているようです。
現在、このコード フローを何度も繰り返しているようです。
「繰り返される」セクションを、必要なときに呼び出される一般的なテンプレートに抽出する最良の方法は何でしょうか? (すべての関数がこれを実装しているわけではありません - ほとんどのものです)。
コード例:
php - MySQL テーブルをローカル コンピューターに保存する
最初は英語で失礼したいのですが、問題があります
この方法でデータベースからテーブルを作成します。
問題は、テーブルをオンラインで削除したいので、これらのデータをファイルに入れようとしているということです。これらの列をコンピューターのローカルに保存する理由があります。
私はすでに試してみましTCPDF
たhtml2pdf
これらを に入れる義務はありませんpdf
が、保存したいだけです。
あなたが私を助けてくれることを願っています。
更新:与えられた2つの良い解決策があります。しかし、私は自分に問題があったAcrobat Reader
ので、これを選びました:
php - 出力がない場合、ob_start は役に立ちませんか?
ここで、私が抱えていたのとほぼ同じ問題のリンクを見ましたが、理解していることを確認したいと思います。ここにリンクがあります: ここでの ob_start() の役割は何ですか
したがって、彼のコードには実際の「出力」はありませんでした。エコーも html も、ほとんど何もありませんでした。しかし、彼には ob_start が含まれていました。私は、彼のようにレガシーコードであり、私のものには出力がありません。いくつかのテーブルを更新するだけです。このリンクで見たすべての回答は、ob_start の実際の機能に対処していました。「このコードでの ob_start の役割は何ですか?」という彼の本当の質問に対処したのは 1 つだけだと思います。したがって、コードが html やエコーなどを出力しない「舞台裏」のスクリプトである場合、出力バッファは役に立たないのでしょうか? ありがとう
php - インクルード スクリプトからコンパイル エラーをキャプチャする方法
関数内にファイルを含めob_start()
、ob_get_contents()
、 などを使用して出力をファイルに保存したい。
しかし、そのインクルード ファイルにエラーがある場合は、次のようにします。
私の関数がそれを認識し、それをキャプチャするために(それを適切に処理できるように)
エラーを出力しないようにするには
set_error_handler
これを許可しますか?