2

金儲けのゲームであるPHPのゲームがあり、毎日市場でアイテムの価格が変化するとします。

データベースの価格が毎日自動的に更新されるようにするにはどうすればよいですか? 24 時間経過したことを検出し、更新を行う PHP ファイルを実行するプログラムをサーバーにインストールしますか? それとも別の方法がありますか?

編集:問題は、私は実際にはホスティング会社から借りたサーバーを所有していないので、コマンドラインに実際にアクセスできない:s

ありがとう、スタニ

4

10 に答える 10

8

Unix システムを使用していると仮定すると、毎日の cron ジョブをセットアップする必要があります。これを行うには、「crontab -e」を実行し、次のように入力します。

9 21 * * * /path/to/your/script

これは毎日21:09に実行されます。

于 2009-03-29T18:34:32.003 に答える
4

コマンドラインにアクセスできない場合は、何かを更新する必要があるかどうかをチェックするphpスクリプトを呼び出す1x1の画像をWebサイトに追加できます。

何かのようなもの

<img style="width: 1px; height: 1px; visibility: hidden" src="cron.php">

cron.phpで、データを更新する必要があるかどうかを確認します。

于 2009-03-29T18:55:11.470 に答える
4

あなたはおそらくcronにアクセスできないので、誰かがページをロードするたびにどれだけの時間が経過したかを確認します. 24 時間が経過した場合は、更新関数を呼び出します。48 時間が経過した場合は、2 回呼び出します。誰もページをロードしない場合、誰も見ていないので更新関数が呼び出されたかどうかは関係ありません;)

または、24 時間ごとに update.php をリモートで呼び出すように自宅のコンピューターをセットアップすることもできます。これは、cron ジョブと wget を使用して実行できます。Windows を使用している場合は、タスク スケジューラを使用できます。

最初のオプションが最適に機能すると思います。ページが読み込まれるたびに更新関数を呼び出し、24 時間のマークが過ぎたときにのみ更新します。正しく記述すれば、正確に 24 時間の時点で更新されても問題ありません。

于 2009-03-29T19:24:32.147 に答える
3

webcronを使用してください:) http://www.webcron.org/index.php?lang=en

またはここに良いリストがあります: http ://www.onlinecronservices.com/

于 2009-03-29T19:41:45.400 に答える
3

「cron ジョブ」、または設定した特定の間隔で実行される PHP ファイルを設定します。

詳細については、この記事をご覧ください。

cron ジョブの最も優れた点は、ストアド プロシージャなどで利用できる機能の小さなサブセットに限定されないことです。好きなロジックを使用できます。:)

于 2009-03-29T18:35:43.780 に答える
2

価格を更新するスクリプトがあり、それを毎日実行するだけの場合は、Cron (Linux) またはat コマンド(Windows) を使用します。

于 2009-03-29T18:36:06.570 に答える
1

ページにアクセスするたびに呼び出される関数を作成し、データベースと照合して更新が行われたかどうかを確認できると思います。

したがって、簡単な擬似コードでは、次のようになります。

function verify_often(){
  if (last_update_in_db() != today() ){
    update_db();
    run_periodic_function(); 
  }
  return 0;
}

この方法では、従来のPHPとMySQLの組み合わせのみが必要です。

于 2009-03-29T19:11:07.000 に答える
1

「コマンドラインにアクセスできない」のはなぜですか? ssh アクセスを許可しないホストは考えられません。cron にアクセスできるかどうかは別の話ですが、これも許可する必要があります。そうでない場合は、新しいホストを見つけてください。

于 2009-03-29T19:25:40.803 に答える
1

それをすべて忘れてください。そのようなことをする理由はありません。

あなたがしなければならないのは、誰かがウェブページを呼び出すたびにチェックすることだけです. 日付を追跡し、現在の日付が変数と一致しなくなったら、新しいデータを取得するものを起動します。バム!もちろん、これはあまりスケーラブルではありませんが、小さなゲームには問題ありません。

于 2009-04-11T12:22:10.213 に答える
0

アレックスの回答への返信方法がわかりませんでしたが、彼らが言ったことに言及したいと思います。「誰かがページをロードするたびに経過時間を確認してください」と言われましたが、ページがロードされるたびに経過時間を確認する必要はないと思います。これを行うより良い方法は、ユーザーがいつログインしたかを確認することです。ユーザーがまだログインしている間に 24 時間以上経過しても、説明されているシナリオでは問題になりません。次回誰かがログインすると、アイテムの価格が変わります。

于 2010-08-28T22:29:27.447 に答える