何が良いですか?私は自分のMySQLログを持っているので、約90MBですが、どちらを使うべきかはわかりません。 EVERYTIMEファイルを開き、実行するクエリがあります。もっと速いですか? file_put_contents(); fopen(); fwrite(); fclose();
もっと速いですか?
何が良いですか?私は自分のMySQLログを持っているので、約90MBですが、どちらを使うべきかはわかりません。 EVERYTIMEファイルを開き、実行するクエリがあります。もっと速いですか? file_put_contents(); fopen(); fwrite(); fclose();
もっと速いですか?
this articleによれば、fwrite()
はより速くsmidgenです。 (ウェイバックマシンへのリンク、サイトが既に存在しないため。)
私の推測では、file_put_contents()
とにかくこれらの3つの方法の周りだけのラッパーですので、あなたはオーバーヘッドを失うだろうということです。
編集:This siteは同じ情報を持っています。
-1これは、もはや存在しないサイトを参照するだけの答えでもあります - あなたはそれからサイトまたは参照記事を引用することができました - downvote – TheBlackBenzKid
Er、サイトは1年前に存在しました。私はおそらくそれをもっと最近のものに変えるべきです。 – hwrdprkns
元の記事は、Wayback Machineでも見ることができます:http://web.archive.org/web/20100109103851/http://balancedbraces.com/2008/06/12/fopen-fwrite-fclose-vs-file_put_contents/ –
通常通り、ベンチマークしましたか? file_put_contentsは本質的には3 f*()
の呼び出しのラッパーです。したがって、たいていあなたは1つの余分な関数呼び出しを行うことで負けていますが、解析するフロントエンドコードが少なくて済みます。
この関数は、データをファイルに書き込むためにfopen()、fwrite()およびfclose()を連続して呼び出すのと同じです。
は、ドキュメントをチェック: http://php.net/manual/en/function.file-put-contents.php
ショーン
http://www.php.net/downloads.phpまた、ソースを入手してボンネットの下に砂時計を得ることができます。これらのタイプの質問に答えるのに役立ちます。 – shaunhusain
ソースをもう少し調べたところ、fwriteはstreams.cからphp_stream_writeを直接使用しているようですが、zend機能を使用していない限り、file_put_contentsへの呼び出しも最終的に(Zendフラグ)php_stream_writeを呼び出すと、他の人がこれをテストしているように(プロダクションではなくテストボックスでも)、質問に答える最良の方法であり、特定のシナリオによって異なります。 – shaunhusain
はあなたのユースケースに依存します。私は.5 GB以上のファイルをオープンしましたが、私は確かにfile()やfile_get_contents()を使用したくありませんでした。ファイルを読む必要があったため、file_put_contentsが機能しませんでした。
読んでいないファイルを追加することに本当に関心がある人は、大したことではありません。ファイル全体をメモリに読み込もうとしている場合(またはメモリからファイル全体を書き込む場合)、同様に重要ではありません。スピードゲインは、私が目にしたところでは丸め誤差です。
しかし、これらのファイルが膨大な巨大なものになることが予想される場合、または特定のファイルの行数の一部だけが必要な場合は、fopen(またはSplFileObject
、これは素晴らしいです)強く十分です。これらのファイルの真ん中から読むのは本当に簡単です。
あなただけログインしているので、他の一方で、私は、個人的には、単純にアペンドフラグを付けてますfile_put_contentsを使用することがより明確かつ簡潔見つけます。それは、二度見なくても何が起こっているのかを誰にでも知らせることができます。
大丈夫、ありがとう。私はスクリプトを書いているだけです。 – genesis
@genesis申し訳ありませんが、今日は私の仕事用マシンで問題が発生しています(大規模なSVNチェックアウトに関係することがありますが、それは何でも可能です)、あなたはそれを見た前にその補遺を得ることができませんでした。 – cwallenpoole
独自のベンチマークを実行します。私はそれが90 MBのファイルを開く時間がかかることはないと確信しています。 – BoltClock
はありません。それは問題です、私は共有ホスト上にあり、実稼働中ですので、単に "テスト"できません。 – genesis
ローカル開発マシンでテストすることができます。 – KingCrunch