SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【php】phpで一時ファイルをメモリ上に作る

問題

phpの tmpfile() ってOSの機能を使って、必ずファイルを作ってしまうらしい。

小さいファイルは、メモリ上の一時ファイルで対応したい。

php-logo

答え

fopen(‘php://memory’, ‘r+’) とか fopen(‘php://temp’, ‘r+’) とかを使うとよい。

php://temp は容量が大きくなると実ファイルを作るそうです。

CSV読み込み処理で使ってみた例

$data = array();
$csv = mb_convert_encoding(file_get_contents($f['tmp_name']), 'UTF-8', 'sjis-win');
//$fp = fopen('php://memory', 'r+');
$fp = fopen('php://temp', 'r+');
fwrite($fp, $csv);
rewind($fp);
$_locale = setlocale(LC_ALL, '0');
setlocale(LC_ALL, 'ja_JP.UTF-8');
while ($v = fgetcsv($fp, 10000)) {
	$data[] = $v;
}
setlocale(LC_ALL, $_locale);
fclose($fp);

参考

PHP マニュアル > 言語リファレンス > サポートするプロトコル/ラッパー > php://

関連するメモ

コメント