#ストリーム 関連のプロジェクト
ここ最近psr-7を受けて、streamまわりのコンポーネントを作ったりしてたのでその整理
https://github.com/struggle-for-php/SfpIteratorUrl
- Iterator to stream に出力するのが目的
- PSR-7 is imminent, and here's my issues with it. にて指摘されてる、450MBのXML出力するにはの回答アプローチ
- streamWrapperを利用 ( stream_read() == Iterator::current() )
- 実装はまだ甘い。
- 全バッファを読むわけではないので、lowメモリー
- iteratorループ回し切ればlength取得可能なのでcontent-lengthもセット可能(出力時に2回まわすことになるので割と無駄)
https://github.com/struggle-for-php/sfp-diactoros-extension
- echoの代わりにfpassthru()したいってのが目的
- SfpIteratorUrlなどと組み合わせ利用を意図
https://github.com/struggle-for-php/SfpStreamView
- テンプレートエンジンがob_get_contents()にて、全バッファ取得してくるのメモリ食いすぎじゃね?ってのが動機。
ob_start(function($buffer) use (&$fp)
という感じでpsr-7Streamボディのファイルポインタの再利用- php://tempが必要なぐらいテンプレートレンダリング結果のHTMLサイズがデカいときに有用
https://github.com/sasezaki/StreamMacroX
テンプレートエンジンのコンパイルに時間がかかるなら、コンパイルしながらレスポンス返せばいいじゃないとStream_Macroをちょっといじって(ob_get_contents|ob_get_clean)なしにのもの出来そうなんだけど、PHPライセンスだったの気付いて頭抱えてる
— sasezaki (@sasezaki) October 19, 2014
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
- http://openpear.org/package/Stream_Macro からのフォーク
- オリジナルだとob_get_cleanしてたので手を加えた。
- streamWrapperとphp_user_filterのあわせ技
- マクロからphpタグに展開し、
include
でphpタグが評価される(たしか)
- https://github.com/salsify/jsonstreamingparser
- 多い日でも安心ですね
- https://github.com/prewk/xml-string-streamer
XMLReader
単体との違いはちゃんとまだ把握してないです
- https://github.com/crazycodr/php-stream-iterators
- これは、streamからiteratorを生成するのが目的らしい
- https://github.com/phly/psr7examples
- なんで
getSize()
がcount($this->iterator)
なの?
- なんで
上記以外でテスト関連で、vfsとかphp-vcrとかありますがここで話題にしたいのとはまあ別