次のcronがいつ実行されるかをプログラムで調べて、作成者にスケジュールを設定する方法を教えてください?
究極のcronと外部cronプロセスを使用しています。
基本的にはできません。
Drupal 7組み込みCRONトリガーメソッドを使用している場合、Drupal 6 Poormanscron モジュールでは、CRONの実行は可用性に依存します訪問者の。訪問者がいない場合、CRONは実行されません。Drupalは、訪問者が表示されるかどうか、いつ表示されるかを予測できないため、CRONがいつ表示されるかを知ることができますまだです訪問者が利用可能であっても、とにかく実行します。
外部ツールを使用している場合、Drupalは、それがトリガーされるかどうか、およびどのようにトリガーするかを予測する方法がありません。すべての適切な要求を受け入れるため、最初のケースよりも少ししかわかりません。サーバーが実行されるはずの時間がわかっている場合、サーバー間の時間差がわからない場合があります。サーバーの時間差はわずかに変更される可能性があるためです。CRONが発生する瞬間と発生する時間の差はわかりません。サーバーはリアルタイムのオペレーティングシステムでホストされているため、アクションリクエストから実行までの最大時間は保証されません。簡単に言うと、サーバーは、CRONタスクがロードされた場合、それを延期し、場合によってはスキップすることもできます。
予測可能で信頼性の高いcronが必要な場合は、 http://example.com/admin/config/system/cron にアクセスし、「サイト外からcronを実行するには、次のURLにアクセスしてください」と記載されているURLを見つけます。次に、サーバー管理者にメールを送り、サーバーのcrontabに追加するように依頼します。
*/5 * * * * wget -O - -q -t 1 http://www.example.com/cron.php?cron_key=yourcronkeyrandomstring
これにより、サイトのCRONが5分ごとに実行されます。正確なタイミングを知る必要はありません。ほとんどのタスクではそれで十分です。そうでない場合は、*/2
2分ごとに実行するか、そのまま*
すべての位置で、毎分トリガーされるようにします。システムの詳細については WikipediaのCRON構成 を参照してください。もちろん、それはDrupalを知ることを許可しません。それは、知る必要からあなたを解放するだけです。
ここで最も簡単な方法(ただし、信頼できる優れた方法ではありません)は、cronジョブを既知の時間(たとえば、毎時、正時に)で実行するように設定し、その知識をDrupalローテクのようなことができる場所
$minutes_left_until_next_cron = 60 - date('i', REQUEST_TIME);
もちろん、これはWebサーバーや外部のcronサーバーのシステム時刻が正しく同期されていることなどに依存しており、実際にはエレガントなソリューションではありません。しかし、それはピンチで行います。