問題タブ [output-buffering]

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.

0 投票する
2 に答える
1481 参照

php - ob_start() の奇妙な動作 - 二重出力

ob_start() は出力を停止していないように見えるため、バッファをフラッシュすると倍増します

出力

でも期待してた

何か案は ?

ありがとう

0 投票する
2 に答える
1666 参照

ruby - ERBのメタプログラミング用メソッド「print」等の利用について

メタプログラミング用にコンソール経由で ERB を使用しています (数学ソフトウェア用)。たとえば、次をtest.erb含むファイルがあります

で解析すると$ erb test.erb、次の出力が得られます

私はそれに驚いていませんが、printメソッドの出力をキャッチして、ERB テンプレートで呼び出された場所に配置する良い方法があるのだろうか?

内部の文字列に出力を収集するのではなく、印刷することを好む複雑な構造があると想像してください<%= %>


アップデート

ブライアンの答えを説明するために:

ファイルの解析$ erb test.erb:

0 投票する
3 に答える
5428 参照

php - テキスト ファイルへの PHP 出力バッファリング

更新スクリプトに問題があります。数時間実行されるので、ライブでテキスト ファイルに出力したいと考えています。

私はで文書を始めます

次に、while ループ内で (データベースのレコードを反復処理するため)、これを持っています

そして最後にロジット関数

ただし、ログ ファイルは空のままです。私は何を間違っていますか?

0 投票する
1 に答える
533 参照

php - セッションが存在しない場合、ob_gzhandler は空白のページを返します

ページを圧縮したかったので、

私のphpヘッダーファイルの先頭にあります。しかし、いじっていると、ob_gzhandler が使用されていないときにセッションを開始すると、空白のページが表示されることに気付きました。だから私は以下を行い、それはうまくいった:

セッションである可能性があると想像しているため、これが常に圧縮を使用するかどうかはわかりませんが、ブラウザーはまだ圧縮されていないデータを受け取ります! シナリオが発生した場合、セッションを再起動する必要があると思いますが、これは開発時以外には本当にすべきではありません。しかし、私が本当に知りたいのは、zlib とこの圧縮に関する簡単なヒントだと思います。パフォーマンスのヒントはありますか?ファイルの最後に表示がない場合、サーバーは内部バッファーを出力すると思いますが、そこに配置する必要がありますか? ob_end_flushob_end_clean?ob_end_close?

これで memcache を使用する際の注意事項はありますか? ヒントや情報をいただければ幸いです。

0 投票する
1 に答える
1546 参照

php - 含まれている PHP スクリプトは、出力バッファリング時に $_POST にアクセスできませんか?

次のindex.phpに投稿するHTMLフォームがあります。

そしてfile.phpで、$_POSTにアクセスしようとしています:

しかし、var_dump($_POST) は空の配列を返します。

ob 関数を index.php に移動しても効果はありません。

var_dump($_POST)を ob_start() のに置くか、出力バッファリングを完全に削除すると、問題はなくなりますが、出力バッファリングが必要です。そこで、問題を突き止めるために、フォーム データを test.php に POST してみました。

そして、それはすべてうまく表示されました。したがって、私のfile.phpの問題は、それが含まれていることと、出力バッファリングを使用していることのようです。セットアップに問題がありますか? $_POST に含まれている出力バッファ スクリプトからアクセスできないのはなぜですか? これを修正する方法、または代替手段はありますか? ありがとう。

編集:もう1つの考えられる要因:私のHTMLフォームタグはこれです:

mod_rewrite を使用して、それを index.php にリダイレクトします。action="/index.php" を試しても何も変わらないので問題ありません。

0 投票する
2 に答える
2437 参照

powershell - Powershell:ホストからの出力をキャプチャする方法

私はPowerShellを使用して、TFSでのチェックアウト/マージに関連するいくつかのタスクを自動化しています。電話すると

チェックアウトされているファイルについて、大量のデータがスクロールされます。このコマンドによって生成される最後の行(成功したと仮定)は、チェックイン番号を示す行です。後でスクリプトで使用できるように、これを解析したいと思います。

私は次のようなことができることを知っています

しかし、出力は完全に抑制され、そのコマンドの出力をリアルタイムでスクロールしたいと思います。基本的に、出力バッファに送信されたばかりのすべてのものを取得したいと思います。

0 投票する
1 に答える
259 参照

php - 外部クラスの依存関係を持つネストされた出力バッファリング [助けてください]

あらゆるアドバイスをお寄せいただきありがとうございます。

次のように配列が作成されるファイル(コンテンツファイル)が1つあります。

これは、いわゆる「テンプレート システム」によって取得され、ページ (およびその配列) を引数 (かなり標準) としてレイアウトがレンダリングされます。

その配列は、次のように新しいオブジェクトを生成するためにテンプレート システムによって使用されます。

では、この場合のプラグインの名前は BannerRotate なので、オブジェクトは $BannerRotate (可変変数) です。これを行っているのは、ページごとに複数のプラグイン オブジェクトを持つことができるようにするためです。このオブジェクトは、メンバー関数 $BannerRotate->getJS() を使用して jQuery プラグインを呼び出すために使用されます。これらのメンバー関数呼び出しは、テンプレート システム内にあります (重要)。

初期配列 [OUTSIDE THE TEMPLATING SYSTEM] (最初にオブジェクトを作成するためにバッファリングしているファイル) と同じファイル内でメンバー関数を呼び出すと、すべてが停止します。var_dump($BannerRotate) を実行すると完全なオブジェクトが得られるため、これは意味がありません。ただし、そのコンテンツ ファイルで $BannerRotate->printNoscript() を実行すると、すべてが消え、オブジェクトは作成されません。次に、非オブジェクトのメンバー関数を呼び出しているという致命的なエラーが発生します。それが問題だ。

コンテンツ ファイルをバッファリングする (そしてオブジェクトを作成する) ためにテンプレート システム内で行っていることは次のとおりです。

同じファイル内でメンバー関数の1つを呼び出さない限り、オブジェクトにアクセスできる理由を誰かが知っていますか?

私に何ができる?

PS私はセットアップが理想的ではないことを知っています. それについて私にできることは何もありません。

ありがとう!

TL;DRファイルBの変数を使用して、ファイルAにオブジェクトを作成しています.ファイルBをバッファリングして、ファイルAにフィードするパラメータを取得し、オブジェクトを作成し、それを別のバッファに出力し、そのバッファにファイルBを含めます同じように。ファイル B に、おそらく作成されたオブジェクトへの関数呼び出しがある場合、致命的なエラーが発生します。非オブジェクトのメンバー関数への呼び出しです。

その他の注意事項:

ファイル B:

ファイル A:

0 投票する
1 に答える
4780 参照

php - ob_get_level() はレベル 1 から開始します

出力バッファリングにいくつか問題があります。主に、ob_gzhandler コールバックを使用して出力バッファリングを実行しようとしていますが、サポートされていない圧縮タイプを使用しているというメッセージが表示され続けます。すべてが有効になっています。問題は、スクリプトの開始時に ob_get_level() を実行するとレベル 1 が生成されることだと思います。php.ini では、output_buffering が 4096 に設定されています。

次のようなものを実行すると:

その後、ob_gzhandler コールバックを使用して ob_start() を正常に実行できます。しかし、それが問題になるべきかどうか疑問に思っています。これを読んでパフォーマンスが向上する可能性があるため、スクリプト中にさまざまな時点で ob_clean() を呼び出します。私はここで何をすべきかについて確信が持てません。

乾杯。

0 投票する
6 に答える
6993 参照

php - PHP:sleep()の前後にデータを出力しますか?

これは純粋に出力バッファリングについてさらに学ぶためのものであり、それ以上のものではありません。私がやりたいのは、文字列をブラウザにエコーし、10秒間スリープしてから、別の何かをエコーすることです。通常、ブラウザは10秒間待機してから結果全体を投稿しますが、どうすれば停止できますか?例:

0 投票する
1 に答える
435 参照

php - evalを使用したPHPのこの非常に基本的なテンプレートエンジンにはどのような問題がありますか?

何年も前にチュートリアルで見たように、実際には「自分のもの」ではない独自のPHPテンプレートエンジンを使用してきました。ただし、ほとんどのコードをリファクタリングして、よりシンプルで使いやすくしました。それなしでPHPプロジェクトを作成することはめったにありません。

これは非常に基本的なものであり、クラスにはロード、割り当て、レンダリングの3つのメソッドしかありません。loadテンプレートファイル(通常はHTML)をロードし、文字列変数として保存します。はassign、HTML内の参照を。の形式で変数に割り当てることができます{reference}。レンダリングはテンプレートファイルを解析し、参照を変数に置き換えます。基本的にはそれだけです。非常に基本的で、非常にシンプルで、時間の節約になります。

PHPとHTMLなどを組み合わせるのが嫌いなので、このテンプレートエンジンが好きです。そのため、私は(WordPressテンプレートのような)テンプレートエンジンとしてのPHP自体はあまり好きではありませんが、そのようなことには非常に強力です。ファイルを.phpファイルとして保存し、それらを多数の混合PHPコードに含めたり、要求したりするというアイデアは好きではありません。シンプルに保つのが好きです。

ただし、このテンプレートエンジンは基本的なものであり、条件とループを許可していません。これは、時々必要となる2つの非常に重要なことです。これまでのところ、テンプレートファイルを分離してから、コントローラーですべての条件/ループを実行することで、この問題を回避してきました。たとえば<ul>、アイテムがデータベースから取得されたリストを含むメインテンプレートファイルがありますが、アイテムの1行のコードを含む別のテンプレートファイルがあり<li>ます。コントローラでループを実行し、<li>'s必要な数だけレンダリングします。

これは紹介だったので、私がどこから来たのか理解できます。さて、本当の質問に...

私はこの方法の代替案を考えて実験しており、可能な限り少ないコードでHTMLテンプレートファイルでPHPの使用を開始しています。たとえば、次のようになります。

そして、コントローラーでは次のようなものがあります。

  • 私が言いたい最初のポイントは、これが私にとって問題を提示するということです。これは、このテンプレートエンジンの目的をやや破ります。echo $valそこに、私はどこに置き換えられるべき参照があるべきかを呼びかけています。$valしかし、変数が使用されるのを待っているときに、テンプレートレンダリングで参照を置き換えることは、完全にばかげていることではないでしょうか。しかし、テンプレートファイルで多くのPHPコードを使用するというアイデアも好きではありません。全体をあまり妥協せずに、できるだけ多くのコードを使用しないようにしたいと思います。ただし、の代わりに参照を設定して、ループごとechoに置き換える方法がわかりません。$valこれについてどう思いますか?
  • 第二に、私はあなたの意見とあなたがこの解決策が持っているかもしれないと思う[もっと]問題をお願いします。または、コードに何か問題がある場合や、どのように改善できるかなど...テンプレートのレンダリングを簡素化するために、すべての出力バッファリングと評価を行うために追加のメソッドを使用できることはわかっていますが、他のものを探していますおそらく、知識を見落としているか、完全に忘れているか、単に知識を見逃している可能性があります。

多分私はこれについて考えすぎているかもしれません、多分私はただ全部を忘れて、過去数年間やってきたようにこれを続けなければなりません。それは私にとって非常にうまく機能し、私のすべてのプロジェクトを簡素化しました。結局、私は基本的に、追加のテンプレートファイルを必要とせずに、テンプレートファイルの条件とループを単純化する方法を探しています。一部のファイルには、数行の単純なコードしかありません。