【php】phpで一時ファイルをメモリ上に作る
問題
phpの tmpfile() ってOSの機能を使って、必ずファイルを作ってしまうらしい。
小さいファイルは、メモリ上の一時ファイルで対応したい。
答え
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);
コメント