2012-01-26 6 views
2

これはおそらく不可能ですが、私は尋ねると思っていました。私が探しているのは、実際のファイルを書く必要なしに、ファイルポインタハンドルを必要とする関数を使用する方法です。偽のファイルハンドルの作成

私はテンポラリファイルを使用することができます。私の操作で出力バッファにファイルを読み込み、ファイルを削除します。しかし、これはディスクへの書き込みからディスクへの読み込みまでの待ち時間を意味します。私はちょうど

$tmp = createFakeFile(); 
fputscsv($tmp, array(/*** an array of csv fields ***/)); 
echo $tmp; 

のような何かをすることができればそれはあなたが私は大好きです。このような何かを行う方法を聞いた場合、私は、これが存在する疑いが、私の場合は、速度とリソースのためにはるかに良いだろうstream_wrapper_register():それを行うための方法が実際にあり、それについて

おかげ

+0

私は、ファイルを使用せずに同じことを達成するための方法があります確信しています。あなたは正確に何を達成しようとしていますか? –

+0

私はこの前に何度も偽のファイルが有益な場所に来ています。私が投稿するようになったのは、データのCSVを作成することですが、データを出力ストリームに入れて保存しないだけです。私は、一時ファイルを作成するか、ファイル要件なしでそれを行う独自の関数を書くことができますが、私はすでに問題を回避する方法を知っています。実際には偽のファイルポインタを使用するのではなく、周辺やサードパーティの機能 – Lee

答えて

5

これには、php:// memoryとphp:// tempラッパーファイルを使用できます。

シテ:

php:// memoryおよびphp://一時は 一時的なデータは、ファイルのようなラッパーに格納することができるように読み書きストリームです。 の2つの違いは、php:// memoryは常に のデータをメモリに格納しますが、 のデータ量があらかじめ定義された制限値に達すると、php:// tempは一時ファイルを使用します(デフォルトは2 MB)。 この一時ファイルの場所は、 sys_get_temp_dir()関数と同じ方法で決定されます。

メモリの制限は、 /maxmemory:NNを付加することで制御できます.NNは、テンポラリファイルを使用する前のメモリの最大データ量をバイト単位で表します( )。

http://php.net/manual/en/wrappers.php.php

+0

ありがとう、私は周りを見てみましょう。私はちょうどphp:// stdoutについての脳波の後にいくつかのコードを書きました...なぜ私はポストを作った後で、いつも解決策を考えるのですか?:) – Lee

1

を聞きます。

Thisサンプルクラスは、実際にメモリに保持されているファイルハンドルを作成します。

と言えば、php://memory、ある程度はphp://tempです。

関連する問題