1

35分ごとにphpスクリプトを実行するcronジョブを設定しました。問題は、午前11時から翌日の午前2時までだけ実行したいということです。crontabに手動で#を追加しなくても、これを自動化したいと思います。

私はこのようなものをphpスクリプトの先頭に置いてみました:

$time = date(H);

if ($time < 23 & $time > 11)
{
   echo 'Working';
}
else
{
   echo 'Stopped';
} 

しかし、ご覧のとおり、これは同じ日にのみ機能します。

サーバーは、私のものと+4時間の差がある別のタイムゾーンを使用しています。

つまり、現地時間の午前11時はサーバー時間の午後3時であり、現地時間の翌日の午前3時は翌日のサーバーの午前7時を意味します。

4

4 に答える 4

1

では、cronジョブを1日の特定の時間帯に実行したいですか?やってみました:

35 11-23,0-2 * * * php /path/to/your/script.php

これは、午前11時(1日目)から午前2時(2日目)までの毎時35分に実行されます。すべてがサーバー時間内にあります。

于 2013-02-16T20:07:18.667 に答える
0

H引用符で囲む必要があります。

$time = date("H");

別の方法では、定数として扱われ、そのような定数がないため、date()空の引数を受け取ります

PSホーナーはあなたにもっと良い解決策を提供しました

于 2013-02-16T20:08:05.537 に答える
0

チェックする前に、時間を正しいタイムゾーンにシフトしてください。

于 2013-02-16T20:12:17.260 に答える
0

コードを取得して算術演算を適用してみましょう。2時間を差し引くと、11から23 +0から2ではなく9から23になります。

$time = date(H)  - 2 ;

if ($time < 23 & $time > 9 )
{
   echo 'Working';
}
else
{
   echo 'Stopped';
} 

試す!

タイムゾーンはGMT-4だと思います。したがって、タイムゾーンの午前11時から午前2時は、サーバーでは午前15時から午前6時になります。他の可能なセットアップは、サーバー時間で話していることです。つまり、午前11時から午前2時は、セットアップの午前7時から午後10時です。

これは、2時間ではなく6時間を差し引くようにコードを調整する必要がある可能性があることを意味します。

于 2013-02-16T20:16:29.633 に答える