PHPで、実行プログラムが、リモートから、実行環境へ、ファイルをダウンロードする方法。
file_get_contentsで取ってきても良いんだけど、大きいファイルを扱うときは、メモリが足りなくなってしまうので、なにか良い方法はないものか…
色々調べた結果、なんと、普通にfopen、freadとかで、httpプロトコルいけたのね!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php $url = 'http://hostname'; $savepath = '/home/test/test.txt'; download($url, $savepath); //メモリにファイル全てを読み込まずに、新しいファイルへ保存する。 function download($fromurl, $tofile) { $fp = fopen($url, 'r'); $fpw = fopen($savepath, 'w'); $size = 0; while (!feof($fp)) { $buffer = fread($fp, 1024); if ($buffer === false) { $size = false; break; } $wsize = fwrite($fpw, $buffer); if ($wsize === false) { $size = false; break; } $size += $wsize; } fclose($fp); fclose($fpw); return $size; } |
コメント