• 締切済み

PHPのfrrite関数

お世話になります。 PHPのfwrite関数について質問です。 下記の様な記述で、アクセスがあった際に$lineをdata.txtに保存する場合、同じタイミングで複数のアクセスがあった場合などにエラーは起きないのでしょうか? エラーが起こりうるのであれば、その対処方法を教えて頂きたいです。 $fp = fopen("data.txt", "w"); fwrite($fp, $line); fclose($fp);

noname#227352
noname#227352
  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

エラーになってくれればまだマシです。何事もなく動作したのに書き込んだデータが消失・・なんてのが怖いですね。∴ 書き込みのときにはflock()を使って排他制御をします。   http://www.php.net/manual/ja/function.flock.php

関連するQ&A

  • PHP初心者です、教えていただけすか。

    /public_html /test のtest.txtの文字列をtest.phpで表示させたいのですが、 下記の文では表示されません、どこがおかしいのか教えてください。 <?php $fp = fopen ('test.txt', 'w'); $date = "test\n"; var_dump (fwrite($fp, $date)); fclose ($fp); ?>

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

    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
  • phpのエラー

    phpで $fp = fopen("test.txt", a);//ココ1 $jyusin = $_POST['score'];//ココ2 fwrite($fp, $jyusin); fclose($fp); $f = fopen("test.txt", r);//ココ1 echo fgets($f); fclose($f); ココ1の場所でUse of undefined constant...というエラー ココ2の場所でUndefined index...というエラー 上記のエラーはどうしたら直りますか。 因みにissetで隠す方法以外でお願いします。

    • ベストアンサー
    • PHP
  • 他のサーバーのファイルを大量に読み込んだら迷惑?

     他のサーバーにアクセスして、大量のhtmlファイルを開き、fgets()でそれらを読み込んだら、相手方のサーバーには迷惑になるでしょうか?  (以下のような感じです。URLの部分は、hを大文字で記述しています) <?php $fp = fopen("http://somewhere.org/page1.html","r"); while(!feof()){ $line = fgets($fp); fwrite($fp,$line); } fclose(); $fp = fopen("http://somewhere.org/page2.html","r"); while(!feof()){ $line = fgets($fp); fwrite($fp,$line); } fclose(); //・・・これを数十回くらい。 ?>  又、迷惑になる場合、ファイルを1つ読み込んだあと、sleep();で何秒か停止すれば迷惑かけずに済むでしょうか? もしそうなら、大体何秒くらいでしょうか?

    • ベストアンサー
    • PHP
  • 無料ホームページの鯖でPHPでfwrite出来ない

    無料ホームページのサーバに"php"というフォルダをアップし、その中に"write.php", "text.txt","read.php"というファイルを作って実行させたのですが、 "write.php"で、 $file = "text.txt"; $fp = fopen($file, "w"); if ($fp == FALSE) { print "ファイルオープン失敗<br />"; } else { fwrite($fp, $text); fclose($fp); } を実行しても"text.txt"の内容が変わらない(空のまま)のですが、何がいけないのでしょうか? "text.php"のパーミッションは666で、"php"フォルダは707です。 考えられる原因をご教授下さい、お願いします。

    • 締切済み
    • PHP
  • PHPでFopenモードを「a」で開きたいのですが、

    PHPでFopenモードを「a」で開きたいのですが、 パーミッションを「777」でしか受け付けてくれません。 コードは、 $fp = @fopen("test.txt","a") or die("Error"); echo "ok"; fclose($fp); です。 サーバーはxreaでPHPのバージョンは5です。

    • 締切済み
    • PHP
  • phpのlock処理について

    phpのlock処理について 頻繁に書き込みされるファイルが飛ばないようにロックをしているのですが、 (アクセスログを保存) phpのロック処理を調べていると 一方ではこれでよい、もう一方ではこれでは意味がないなど 色々な事が書かれており、いまいち理解できません。 wモードで開くと強固なロックは不可能なのでしょうか。 以下のようにしているのですが ロックの意味はないでしょうか。 //ロック専用ファイルを開く $flock=fopen("lock.txt","w"); //ロック専用ファイルをロック flock($flock,LOCK_EX); //書き込むファイルを連結して代入 $lineall = implode('', $lines); //書き込み用のファイルを開く $fp=fopen($log_file,"w"); fwrite($fp, $lineall); fclose($fp); //ロック用ファイルのロック解除 flock($flock, LOCK_UN); fclose($flock); プログラムが1から私が作成したものではなく、 ちょくちょく消えてしまうことからロック処理をしたいのと 処理の問題でwモードでの書き込みでないとどうもゴミが入ってしまうようですので (r+でやってみましたが空行などのゴミが沢山入ってしまいました) wモードでの強固なロック方法があればと思うのですが・・・。 お手数をおかけしますがご教授いただけますと幸いです。

    • ベストアンサー
    • PHP
  • 【PHP】テキストファイル内の数字に加算する方法

    PHPでカウンターを作ってみたんですが、たまに数字が勝手にリセットされて困っています。 $aa = file_get_contents("aa.txt"); $aa = $aa + 1; $aaTX = fopen("aa.txt", "w+"); fwrite($aaTX , $aa); fclose($aaTX ); という形にしてるんですが、おそらく複数の閲覧者が同時にアクセスしたときに、fopen("aa.txt", "w+")で真っ白になってるものをfile_get_contentsで読み込んでしまい、リセットされた形になってしまうのかなと。 これ、fopenを使わず、aa.txt内の数字に直接加算させる方法とかないのでしょうか? fopenはすでに記されているものの前後に文字列を加えるというようなことはできるようですが、書かれている数字に加算したり減算したりはできませんよね? 他に直接計算することができるような命令とかありますか? せめて、このリセットが防げるような方法だけでもあれば助かるのですが…。

    • ベストアンサー
    • PHP
  • さくらサーバーのcronでphpを動かしてファイルを作りたい。

    さくらサーバーのcronでphpを動かしてファイルを作りたい。 cron.php <?php $date = date("Y/m/d H:i:s"); $fp = fopen("./cron.txt", "w"); flock($fp, LOCK_EX); fputs($fp,$date); fclose($fp); print "cron成功"; ?> cron報告レポートには[cron成功]の文字が出ているので、cronコマンドは間違っていないのですが、cron.txtが作れていません。 直接、cron.phpにアクセスすると、[cron成功]と文字が出てcron.txtも作れています。 どうすればcron.txtが作れるのでしょうか。 よろしくお願いします。

  • ログファイルの古い日付の行を削除する方法について

    下記にアクセスした場合、このプログラムにアクセス時、sample.txtにアクセス記録が保存されますが、このままではログファイルが一方的に多くなります。 その為、例えばもう必要ないと思われる1年以上前のアクセス記録を自動的に削除したいと思ったのですが、どのように記述すれば良いか分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 <?php $fp = fopen("sample.txt", "a+"); flock($fp, LOCK_EX); $log_data = date('YmdHis') . "\n"; fwrite($fp, $log_data); fclose($fp); ?> なお、データベースは使用できないということでお願いします。 また、レンタルサーバを使用しており、サーバ管理者の権限が必要な対応も使用できないということでお願いします。 以上、よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう