0

私はphpとデータベースのことは初めてですが、周りを見回して解決策を見つけることができません.

私が達成しようとしていること:

画像のスライドショーがあります。画像は Flickr の API から取得され、データベース テーブルに保存され、データベース データが JSON リンクに生成されます。

私の質問は、スライドショーが JSON リンク内のすべての画像を一周するたびに flickr API を呼び出す php スクリプトを実行する方法はありますか? 1 分ごとに指定することもできますが、スライドショーに画像が少ない場合は長すぎる可能性があります。

それができない場合は、

金曜日の午後 9 時から午前 3 時まで、1 分ごとにスクリプトを実行する方法はありますか?

4

4 に答える 4

1

これは、最後の行の cron 仕様です。

# Friday from 9pm to 11:59pm
* 21-23 * * 5 php -q /path/to/script.php
# Saturday from midnight to 2:59am
* 0-2 * * 6 php -q /path/to/script.php
于 2013-11-08T23:15:53.793 に答える
1

それをスケジュールする方法に関するあなたの特定の質問については、次のようになります

* 21-23 * * 5 /path/to/php /path/to/script
* 0-2 * * 6 /path/to/php /path/to/script

あなたのcrontabファイルで。実際には 2 日間にわたってコマンドを実行しているため、2 つに分割するのが最も簡単です。最初の * は、毎分実行することを意味します。

http://en.wikipedia.org/wiki/Cronを参照

あなたのギャラリーの内容は、あなたが何をしているのか、特に明確ではありません。

于 2013-11-08T23:16:50.070 に答える
1

答えはイエスです。方法はありますが、使用しているスライドショーによってすべてが異なります。あなたがそれを構築しなかった場合、スライドショーの最後におそらく実行されている関数を探して、最初にループするようにトリガーします。その関数が見つかったら、API に接続して新しい画像を取得するスクリプトを実行するように変更できます。

新しい画像が読み込まれるまで、スライドショーのループを遅らせる必要がある場合があります。

于 2013-11-08T23:15:29.750 に答える
0

これには実際には 2 つの側面があり、おそらく互いに独立して行う必要があります。

まず、Flickr API の更新を確認する方法が必要です。これは、サービスでローカルに使用できるデータのキャッシュされた表現を構築するスクリプトである可能性があることをお勧めします。cronjob を介してこれをトリガーできます (cron の構成方法については、ここで既に適切な回答が得られているため、スキップします)。

クライアントが Flickr API への呼び出しを開始する必要はありません。60 の同時クライアントが Flicker までの更新を毎分チェックしている場合と同じように、基本的に平均して 1 秒に 1 回更新をチェックすることになります。

Flickr データのキャッシュされた表現は、操作しやすいと思われる形式 (JSON など) にすることができます。ページのロード時に、キャッシュされたデータを取得するために AJAX 経由で呼び出すことができるサーバー側のスクリプトを介して、キャッシュされたデータをフロントエンド (つまり、javascript) に公開します。

サーバーサイドスクリプトを毎分実行し、最新のデータをいくつかのjavascript変数に入力することで、スクロール動作とは無関係にデータをjavasciptに更新できます。

次に、スライドショーを毎分直接更新するか、お勧めのように、スクロールがループして最初に戻ったときに、スライドショーを最新のデータ (既に JavaScript にある) から再構築することができます。

考慮すべきことの 1 つは、可能であれば、スライドショー情報が Flickr で最後に更新されたとき、サーバーに最後にキャッシュされたとき、および javascript がサーバーからデータを最後にプルしたときのデータを保持することです。これらの更新時間を比較することで、最初に更新する必要があるかどうかを判断するだけで、キャッシュの再構築、javascript での表現の再構築などの手間を省くことができます。

于 2013-11-08T23:39:36.397 に答える