6

クライアントは、PHP で構築されたカスタム ソリューションを使用して、Twitter ストリームを Web サイトのホームページに追加することを希望しています。

Twitter API では 1 時間あたりの呼び出し回数が明らかに限られているため、誰かがクライアントのホームページを更新するたびに Twitter に自動的に ping を送信することはできません。

現在、クライアントの Web サイトは純粋に HTML であるため、利用可能なデータベースはありません。したがって、私のソリューションは、PHP とローカル ファイル システムのみを必要とする必要があります (たとえば、データを含むローカル XML ファイルを保存するなど)。

では、この制限された基準を考慮して、数分以内に API 呼び出しの制限に達することなく、PHP 経由で Twitter API にアクセスするための最良の方法は何ですか?

4

6 に答える 6

3

タイムラインをプルダウンして表示できれば、ファイルベースのキャッシュを追加するのは非常に簡単です。

check age of cache
Is it more than 5 mins old?
    fetch the latest information
    regenerate the HTML for output
    save the finished HTML to disk
display the cached pre-prepared HTML

PEAR の Cache_Liteは、キャッシング層で必要なことをすべて行います。

于 2009-06-04T12:45:51.550 に答える
0
  1. cronジョブ(likleyではありません-データベースさえない場合は、cronジョブはありません)
  2. をファイルに書き込みmicrotime()ます。ページビューで、現在のタイムスタンプを保存されているタイムスタンプと比較します。その差がN分を超える場合は、新しいツイートフィードをプルして、現在のタイムスタンプをファイルに書き込みます
  3. フロントページがphpを呼び出さない静的なhtmlファイルである場合<img src="scheduler.php"/>は、1pxの透明なgifを返す画像を含め(少なくとも私が若いときにこのようにした)、Twitterを静かに引っ張る

または、「サーバーではなく、マイ/顧客のコンピュータ」-ローカルのように、ローカル-ローカルファイルシステムを意味しますか?

この場合:

  1. cronジョブまたはスケジューラとPHPを備えたサーバーを取得する
  2. フィードを読み取ってファイルに保存するスクリプトを作成します
  3. FTPを使用して顧客サーバーにファイルを書き込みます
  4. javascriptを使用してフィードを表示します(はい、ajaxはデータソースとして静的ファイルでも機能します)。jqueryまたはいくつかのlibはこれに最適です
  5. または:ツイートを表示するhtmlファイルをローカルで作成してアップロードします(ただし、サーバー上の更新を上書きする可能性があるため、注意してください)。

imo:小規模なサイトの場合、とにかく完全に拡張されたSQLデータベースは必要ないことがよくあります。ファイルシステムは素晴らしいです。多くの場合、 scandirpreg_match 、および慎重に選択したファイル名の組み合わせで十分です。
実際には、美しいjavascriptを使用して、多くのフロントエンド処理(XMLの表示など)を実行できます。

于 2009-06-04T11:45:38.707 に答える
0

サーバーの構成がわからないため、cronジョブを設定することをお勧めします(Linuxボックスを想定しています)。共有ホスティング環境にcPanelのようなものがある場合、それはそれほど問題にはならないはずです。cronによって呼び出され、最新のツイートを取得してファイル(xml?)に書き込むスクリプトを作成する必要があります。cronを30分ごとに実行するようにスケジュールできます。またはあなたが望むものは何でも。

于 2009-06-04T11:55:13.493 に答える
0

Tim Davies による TweetPHP を使用することもできます。http://lab.lostpixel.net/classes/twitter/ - このクラスには、クライアントのタイム ラインを表示するなど、必要な機能が多数あります。このページには、使用方法の良い例が示されています。

次に、この出力をファイルまたはデータベースに入れることができます。サイト訪問者にデータベースまたはファイルを 5 分ごとに更新してもらいたい場合は、タイムスタンプを保持するセッション変数を設定し、タイムスタンプが少なくとも 5 分前であれば別の更新を許可することができます。

お役に立てれば

于 2009-06-04T12:36:24.627 に答える
0

私の提案: キャッシュの日付とツイートの配列を保持する小さな単純なオブジェクトを作成します。誰かがページにアクセスするたびに、次のロジックが実行されます。

A) ファイルは存在しますか?

はい: 変数に読み込む いいえ: 手順 D) に進みます

B) 変数のシリアル化を解除します (PHP の serialize()/unserialize() のペアで問題ありません)

C) 保存されているキャッシュの経過時間と現在の時刻を比較します (Unix タイムスタンプで実行できます)。互いに 5 分以上離れています。

D) Twitter から最新のツイートを取得し、オブジェクトを更新してシリアライズし、再度キャッシュに書き込みます。印刷用に最新のツイートも保存します。そうではありません。キャッシュからツイートを読み取るだけです。

E) ツイートを印刷する

オブジェクトをシリアル化する最も簡単で簡単な方法は、serialize()/unserialize() のペアです。オブジェクトを作成する努力を後回しにしたくない場合は、2D 配列を使用できます。serialize() は問題なく動作します。http://php.net/serializeをご覧ください

cPanel にアクセスできないことを考えると、PEAR パッケージ、cron、またはその他の単純なソリューションにアクセスできないため、これが最適なソリューションです。

于 2009-06-04T15:05:38.990 に答える
0
array(
'lastrequest' => 123,
'tweets' => array ()
)

コードで、lastrequest のデータストア内のタイムスタンプが X 秒以上経過しているかどうかを確認するチェックを入れます。その場合は、データを更新する時です。

配列をシリアル化してファイルに保存します。非常に簡単です

于 2009-06-04T15:25:20.323 に答える