• ベストアンサー

ファイル書き込みの適切なタイミングについて

↓fwrite()で、ファイル書込を行いたいのですが、 http://jp.php.net/manual/ja/function.fwrite.php データを、 1行づつファイルに書き出すのと、 1行づつ変数に貯めておき、fclose()の直前で、 1度にファイルへ書込むのとどちらが メモリ効率や書込速度に優れているのでしょうか?

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • rara_sun
  • ベストアンサー率50% (271/539)
回答No.1

処理の内容にも依りますが、一般的には、 できるだけバッファ(メモリ領域)にためて ある程度溜まったら書き出すのが書き込み速度が 早くなります。 欠点は、データを書き込む前に例外によるエラーが発生するとそれまで溜めたものが消えます。

matchori
質問者

お礼

一般的な方法や注意点などとても参考になりました。 ありがとうございます。

関連するQ&A

  • ファイルの書込みができません 教えてください

    今 ファイルの書き込みを作成しているのですが。以下のプログラムではテキストの方に書き出しされません。何処が悪いのかわかりません。 わかる方教えてください。 <html> <head> <title>file2</title> <meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS"> </head> <body> <?php $file_name="file2.txt"; $fh=fopen($file_name,"w+"); fwrite($fh,"1行目です?n2行目です"); fclose($fh); print "ファイルの書込完了"; ?> </body> </html> ファイルの書込完了とはでるのですが。

    • ベストアンサー
    • PHP
  • ファイルへの書き込みについて

    test.phpというスクリプトを作成しています。 ファイルを指定して指定文字列"ABCD"を書き込むという処理です。 =========================== $MOJIRETU="ABCD" $fp=fopen("./TEST/TEST.html", "w"); fputs($fp,$MOJIRETU); fclose($fp); =========================== という処理です。 ですが、どうしてもファイルが作成されません。 実際に書き込むファイルは存在しませんが、 マニュアルを見るとfopenはファイルが未存在の 時は作成すると書いてありました。 権限(?)の問題かと思い、test.phpを'777'に変更しましたが 作成されませんでした。 どのような問題が推測されるでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • phpでアップロードしたファイルを変数に直接受け取る方法

    phpでアップロードしたファイルをテンポラリファイルに保存せず、直接変数に直接受け取りたいと思っております。 putメソッドというのがあるようなのですが、これは少しレアな気がしており、postで対応可能であればそうしたいと思っております。 PHP マニュアル 第38章 ファイルアップロードの処理 http://www.php.net/manual/ja/features.file-upload.php http://www.php.net/manual/ja/features.file-upload.put-method.php

    • ベストアンサー
    • PHP
  • 特定の変数の値をセッションを使わずに引き継ぐ方法

    PHPだと、output_add_rewrite_var()という関数 http://jp2.php.net/manual/ja/function.output-add-rewrite-var.phpで、 特定の変数をセッションを使わずに引き継ぐ方法があるのですが、 Perlで同じ事を実現できるでしょうか?

  • ファイルに書き込む時の負荷について

    PHPバージョン5.2.4を使っています。 次のような // ------------------------------------ $fp = fopen("data.txt", "w"); $buf = ""; for ($i = 1; $i <= 3; $i++) { $buf .= "aaa$i\n"; } fwrite($fp, $buf); fclose($fp); // ------------------------------------ という変数にいったん保存してから書き込む場合と // ------------------------------------ $fp = fopen("data.txt", "w"); for ($i = 1; $i <= 3; $i++) { $buf = "aaa$i\n"; fwrite($fp, $buf); } fclose($fp); // ------------------------------------ というその都度ファイルに書き込む場合とでは どちらが良い悪いというのはあるのでしょうか? たとえばこちらのやり方は負荷がかかるなど ループが多くなっていった場合に違いがでてくるのでしょうか?

    • ベストアンサー
    • PHP
  • ファイルの書き込みについて

    ファイルの書き込みに関する質問です。 下のコードでは、 3行目「$ptr=fopen("kekka.txt", "w"); //ファイルを開く」 に問題があるというエラーが出ます。 しかし、文法的には問題はないと思うのですが・・・。 サーバーには、"kekka.txt"というファイルが置いてあります。 何かアドバイスがありましたら、よろしくお願いいたします。 <?php $x = "こんにちは";  $ptr=fopen("kekka.txt", "w");   //ファイルを開く    flock($ptr, LOCK_EX);      //ファイルをロックする      fputs($ptr, $x);      //書込む    flock($ptr, LOCK_UN);       //ロックを解除する  fclose($ptr);            //ファイルを閉じる ?>

    • ベストアンサー
    • PHP
  • (int)キャストとintvalの違い

    (int)キャストとintvalでは何が違うのでしょうか ・(int)$page; ・intval($page); ▽PHP: intval - Manual   http://jp2.php.net/manual/ja/function.intval.php

    • ベストアンサー
    • PHP
  • php fputs について

    こんにちは、趣味でプログラミングをしている者です。 さっそくですが質問させていただきます。 php で何かを作ったことはないのですが すこし勉強してみようと思い、 インターネットでphpの記事を見たりしていたところ、 次のような例文を見つけました。 <?php $http_response = ''; $fp = fsockopen('www.php.net', 80); fputs($fp, "GET / HTTP/1.1\r\n"); fputs($fp, "Host: www.php.net\r\n\r\n"); while (!feof($fp)) { $http_response .= fgets($fp, 128); } fclose($fp); echo nl2br(htmlentities($http_response)); ?> この例文の処理はなんとなくわかるのですが、 上記の例文で、fputs について調べようと思い以下のサイトの 記事を見ました http://www.php.net/manual/ja/function.fputs.php そこには次のように書かれていました。 fputs fwrite() のエイリアス そこで質問させていただきたいのですが、 エイリアスとはどのようなものなのでしょうか? windows のエクスプローラでいえばショートカットのような ものでしょうか? 例文で fwrite を使ってもよいのでしょうか? ご存知のかた、教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • fopen()関数を使用し、最後から二行目に保存する

    こんにちは。 PHPで、データをfopen()関数を使用し、 <?php ・ ・(途中略) ・ ?> のうちの、?>の一つ上の行にデータを保存したいのですが、 可能ですか? 要は、ここです。 <?php ・ ・ ・ $data = "●●"; // ←ここ ?> 今のところ、最後の行に保存する方法しか知らないので・・・。 $dataopen = fopen ("./data.php", "a"); fwrite ($dataopen, "$data = $_POST["data"];"); fwrite ($dataopen, "\n"); fclose ($dataopen); どうか、ご教授くだされば幸いです。

    • 締切済み
    • PHP
  • fputs()はfwrite()のエイリアスとは?

    『fputs()はfwrite()のエイリアス』とは何ですか? http://www.phppro.jp/phpmanual/php/function.fputs.html fwrite()はfopen()を使用してファイルを開き、引数に指定した文字列をそのファイルに書き込むための関数。 エイリアスとは、http://e-words.jp/w/E382A8E382A4E383AAE382A2E382B9.htmlによるとファイルなどの実体を別の名前で参照するためのシンボルといった意味で使われることが多い。 つまり、基本的には1つのファイルは1つの名前しか付けられないのに対して、エイリアスは複数名前を付けられる?『test.php』というAファイルがある場合、Aファイルにエイリアスとして『eiriasu.php』と設定すれば、そのAファイルを『test.php』とも『eiriasu.php』とも呼べるようになるということでしょうか? 書きこんでいて気が付いたのですが、fputs()とはfwrite()の呼び方を変えただけで中身はまったく同じということでしょうか。

    • ベストアンサー
    • PHP

専門家に質問してみよう