0

OK、私はウェブサーバーとphpを使用するサイトを持っています。私の質問は、php ファイルを定期的に (たとえば 5 分ごとに) 実行するようにトリガーするにはどうすればよいですか?

残念ながら、私の Web ホスティング プロバイダーは cronjobs をサポートしていないようですが、cron にアクセスできない人のための代替手段があるに違いありません。

4

3 に答える 3

2

要件を考えると、cronjob なしでは実行できません。最近では、cron ツールにアクセスできない場合は、ホストを切り替えるだけです。

別の方法としては、ユーザーがサイトにアクセスしたときにアクションが実際にトリガーされるということです。つまり、Web サイトが毎分アクセスされることが確実な場合は、データベースを使用して「cron ジョブ」を追跡します。ユーザーが Web サイトにアクセスすると、過去 5 分間に cron が実行されたかどうかを確認し、実行された場合は何もしません。実行されていない場合は、cron を実行し、データベースに実行されたときのタイムスタンプを保存します。これは、ユーザーが Web サイトにアクセスするたびに発生します。

ただし、これは貧弱な cron です。アクションに時間がかかる場合は使用しないでください。ユーザーはアクションが完了するまで待たなければならないため、時間がかかる場合、ユーザーは Web サイトを離れるだけです。

編集:あなたが言うように専用サーバーの場合、シェルにアクセスできる必要があり、そこからcronをセットアップできます。

于 2013-04-18T11:05:39.813 に答える
1

PHPのデーモンスクリプトでそれを行うことができます。

デーモンを作成して実行できます。そのストアでタイミングを確認し、毎回 do while で時間差を確認します。時間差が 5 分になった場合は、他のスクリプトを呼び出してタイミング変数をリセットできます (その逆も同様です)。

于 2013-04-18T11:05:09.890 に答える
1

これらの 5 分間をどれだけ緩く適用するかによって、またサイトへの定期的なトラフィック (少なくとも 1 分間に 1 回のリクエスト) がある場合は、次のことを検討できます。

  • リクエストごとに、ジョブが最後に実行されたときにデータベースをチェックします
  • これが 5 分以上前の場合は、ジョブを実行してデータベースを更新します

このスクリプトを実行すればするほど、5 分間はより正確になります。このスクリプトの実行回数を増やすには:

  • config.php のように、すべてのリクエストに含まれるファイルがあるかどうかを確認してください。
  • または、ルーティングがあるかもしれません。たとえば、すべてのリクエストは index.php を通過します。
于 2013-04-18T11:04:10.017 に答える