タイトルが複雑なのは知っていますが、アドバイスを探していたところ何も見つかりませんでした。
私が正しい方法を考えているかどうか尋ねたいだけです。
私のウェブサイトのアイテム(画像、記事など)のために約10個のアイテムでトップのFacebook共有ページを作成する必要があります
そして、これは簡単です。FacebookグラフAPIから共有数を取得し、データベースで更新します。fb共有に基づくajax呼び出しでは作成したくないので、誤用される可能性があります。
すべてのアイテムには、最終更新の日時があり、データベースに日付といいねのフィールドを作成します。
また、24時間、7日、1か月で上位の共有URLを作成する必要があるため、アイデアは単純です。
- ユーザーがアイテムを表示します。10分ごとに、このURLのfbグラフAPIから共有カウントが取得され、データベースで更新されます。データベースには、最終更新時刻も保存されます。
- ユーザーがアイテムを表示するたびに、サイトは最終更新日時を確認します。10分を超える場合は、fbapi呼び出しを行って更新します。fbapi呼び出しを下げるのは10分ごとです。
これは基本的には機能しますが、問題があります-並行性。
アイテムが選択されたら、phpで最後の更新が10分以上前かどうかを確認し、次にfb apiを呼び出してから、共有カウント(現在よりも大きい場合)と残りのデータを更新します。呼び出しにはコストがかかり、fbapiの使用量を減らすことができます。
したがって、ユーザーがアイテムを表示するまで、アイテムは更新されますが、更新は選択に依存しており、時間チェックとリモート呼び出しのために1つのSQLステートメントでそれを行うことができないため、1人のユーザーが入力してから別のユーザーが入力できます。数分後、fb apiを何度も呼び出し、何度も更新する可能性があります。ユーザーが増えるほど、呼び出しと更新が増えますが、これは適切ではありません。
これを修正する方法をアドバイスしますか?私はそれを正しくやっていますか?たぶんもっと良い方法がありますか?