2017-01-17 6 views
2

さて、タイトルはたくさん説明されました。私は(のと呼ばれるanalytic.jsonを聞かせて)1つのファイルオブジェクトを作成しようよ、となるようなオブジェクトが含まれます。この場合1000人のユーザーが1つのファイルを開いて書き直すとどうなりますか?

{"country":{"indonesia": 
    [{"uniqueID":'00000000000',"dateVisit":"20170129","visitTimes":17}, 
    {"uniqueID":'00000000001',"dateVisit":"20170129","visitTimes":10}]}} 

を、私は訪問者を追跡したいと思います。それぞれの訪問者は1ユニークIDと呼ばれ、訪問者が新しいページを開くたびにvisitTimesが呼び出されます。 私が懸念している問題は、一度に1000人以上の訪問者がページを開いたときです。何が起こるのですか?

このファイルを開いて書き換えるたびに、fopenfwrite、およびfcloseが実行されます。データベースを使用せずにこれを行う方法はありますか?これらのプロセスをキューに入れる機能を用意する必要がありますか?そしてどうやって?多くの質問は、本当にそれを感謝します。

+2

あなたには最も役に立たないファイルIO関数について言及しましたが、ロックに関する注意は省略しました。いいえ、これは実行可能なアプローチではありません。あなたはすでに知っているより良いアプローチで正確な資質は何ですか? – mario

+0

ファイルロックを使用する必要がありますが、私たちはそのような試みを阻止することしかできません。ファイルベースのストレージは単に間違ったアプローチです。データベースが行く方法です。 – arkascha

+1

ここでdogpileに追加するには、ファイルのロックは1つの問題に過ぎません。あなたのファイルが4-5GBの場合はどうなりますか? – Machavity

答えて

2

まず最初にコメントに記載されているように、あなたはこの目的のためにデータベースを使い分けてください。これは、データベースがために構築され、あなたがデータベースとしてファイルを使用する場合は、次のような問題が発生するものです。

  1. は、より多くの時間(開閉)
  2. は、より多くのスペースを必要とニーズ
  3. ファイルロックは遅くなりますサーバーダウン(とそれが必要となります)
  4. ファイルが速く成長し、あなたがより多くのサーバーが過負荷にされませんしているため、より多くの訪問者になる - はチャンスをできるだけ早くあなたが訪問者
、かなりの量を持っているとして、

PHPでの同時リクエストに関する次の説明を読んでください。Simultaneous Requests to PHP Script

ファイル解決策(悪い考えです)を使用する代わりに、素敵なデータベースのコンセプトを作成してください。更新、照会、ロック、および現在の状態をJSONとして配信するための素晴らしい機能を作成することができます。

+0

感謝の男、あなたは私の日を救った。 –

関連する問題