どちらかというと、単なるネタ記事(何)。
cronで実行する処理で、以下の要件を満たすような場合に自分が使っている実行時刻の決め方の一つ。
- 1日1回実行されればよい
- 似たような処理が複数あるが、随時増えていく
- (同じコマンドのパラメータ違いを別々にcrontabのエントリにするとか)
- 実行時刻は問わないので、負荷分散のために適当にばらけさせたい
ただ単に「時」「分」を整然と並べても面白くないので、以下のように生成している。
- 「時」は0から23まで順番に
- 「分」は素数を順に使用(0から59までの間に17個ある)
せっかくなので(謎)、それを生成するPHPプログラムを書いてみた。
<?php $h = range(0, 23, 1); $m = array(); // 素数列を生成 for($p = 1; ($p = gmp_intval(gmp_nextprime($p))) < 60;) { $m[] = $p; } $mi = 0; $hi = 0; do { printf("%02d %02d * * *\n", $m[$mi], $h[$hi]); $mi = ($mi + 1) % count($m); $hi = ($hi + 1) % count($h); } while ($mi != 0 || $hi != 0);
使用している関数については、以下を参考に。
- gmp_nextprime
- gmp_intval
実行結果を整形して表にしてみると、以下のような感じ。(表示の都合上、crontabに書く「日」「月」「曜日」は省略)
1周目 | 2周目 | 3周目 | 4周目 | 5周目 | 6周目 | 7周目 | 8周目 | 9周目 | 10周目 | |
---|---|---|---|---|---|---|---|---|---|---|
00時台 | 02 00 | 19 00 | 47 00 | 11 00 | 37 00 | 03 00 | 23 00 | 53 00 | 13 00 | 41 00 |
01時台 | 03 01 | 23 01 | 53 01 | 13 01 | 41 01 | 05 01 | 29 01 | 59 01 | 17 01 | 43 01 |
02時台 | 05 02 | 29 02 | 59 02 | 17 02 | 43 02 | 07 02 | 31 02 | 02 02 | 19 02 | 47 02 |
03時台 | 07 03 | 31 03 | 02 03 | 19 03 | 47 03 | 11 03 | 37 03 | 03 03 | 23 03 | 53 03 |
04時台 | 11 04 | 37 04 | 03 04 | 23 04 | 53 04 | 13 04 | 41 04 | 05 04 | 29 04 | 59 04 |
05時台 | 13 05 | 41 05 | 05 05 | 29 05 | 59 05 | 17 05 | 43 05 | 07 05 | 31 05 | 02 05 |
06時台 | 17 06 | 43 06 | 07 06 | 31 06 | 02 06 | 19 06 | 47 06 | 11 06 | 37 06 | 03 06 |
07時台 | 19 07 | 47 07 | 11 07 | 37 07 | 03 07 | 23 07 | 53 07 | 13 07 | 41 07 | 05 07 |
08時台 | 23 08 | 53 08 | 13 08 | 41 08 | 05 08 | 29 08 | 59 08 | 17 08 | 43 08 | 07 08 |
09時台 | 29 09 | 59 09 | 17 09 | 43 09 | 07 09 | 31 09 | 02 09 | 19 09 | 47 09 | 11 09 |
10時台 | 31 10 | 02 10 | 19 10 | 47 10 | 11 10 | 37 10 | 03 10 | 23 10 | 53 10 | 13 10 |
11時台 | 37 11 | 03 11 | 23 11 | 53 11 | 13 11 | 41 11 | 05 11 | 29 11 | 59 11 | 17 11 |
12時台 | 41 12 | 05 12 | 29 12 | 59 12 | 17 12 | 43 12 | 07 12 | 31 12 | 02 12 | 19 12 |
13時台 | 43 13 | 07 13 | 31 13 | 02 13 | 19 13 | 47 13 | 11 13 | 37 13 | 03 13 | 23 13 |
14時台 | 47 14 | 11 14 | 37 14 | 03 14 | 23 14 | 53 14 | 13 14 | 41 14 | 05 14 | 29 14 |
15時台 | 53 15 | 13 15 | 41 15 | 05 15 | 29 15 | 59 15 | 17 15 | 43 15 | 07 15 | 31 15 |
16時台 | 59 16 | 17 16 | 43 16 | 07 16 | 31 16 | 02 16 | 19 16 | 47 16 | 11 16 | 37 16 |
17時台 | 02 17 | 19 17 | 47 17 | 11 17 | 37 17 | 03 17 | 23 17 | 53 17 | 13 17 | 41 17 |
18時台 | 03 18 | 23 18 | 53 18 | 13 18 | 41 18 | 05 18 | 29 18 | 59 18 | 17 18 | 43 18 |
19時台 | 05 19 | 29 19 | 59 19 | 17 19 | 43 19 | 07 19 | 31 19 | 02 19 | 19 19 | 47 19 |
20時台 | 07 20 | 31 20 | 02 20 | 19 20 | 47 20 | 11 20 | 37 20 | 03 20 | 23 20 | 53 20 |
21時台 | 11 21 | 37 21 | 03 21 | 23 21 | 53 21 | 13 21 | 41 21 | 05 21 | 29 21 | 59 21 |
22時台 | 13 22 | 41 22 | 05 22 | 29 22 | 59 22 | 17 22 | 43 22 | 07 22 | 31 22 | 02 22 |
23時台 | 17 23 | 43 23 | 07 23 | 31 23 | 02 23 | 19 23 | 47 23 | 11 23 | 37 23 | 03 23 |
11周目 | 12周目 | 13周目 | 14周目 | 15周目 | 16周目 | 17周目 | |
---|---|---|---|---|---|---|---|
00時台 | 05 00 | 29 00 | 59 00 | 17 00 | 43 00 | 07 00 | 31 00 |
01時台 | 07 01 | 31 01 | 02 01 | 19 01 | 47 01 | 11 01 | 37 01 |
02時台 | 11 02 | 37 02 | 03 02 | 23 02 | 53 02 | 13 02 | 41 02 |
03時台 | 13 03 | 41 03 | 05 03 | 29 03 | 59 03 | 17 03 | 43 03 |
04時台 | 17 04 | 43 04 | 07 04 | 31 04 | 02 04 | 19 04 | 47 04 |
05時台 | 19 05 | 47 05 | 11 05 | 37 05 | 03 05 | 23 05 | 53 05 |
06時台 | 23 06 | 53 06 | 13 06 | 41 06 | 05 06 | 29 06 | 59 06 |
07時台 | 29 07 | 59 07 | 17 07 | 43 07 | 07 07 | 31 07 | 02 07 |
08時台 | 31 08 | 02 08 | 19 08 | 47 08 | 11 08 | 37 08 | 03 08 |
09時台 | 37 09 | 03 09 | 23 09 | 53 09 | 13 09 | 41 09 | 05 09 |
10時台 | 41 10 | 05 10 | 29 10 | 59 10 | 17 10 | 43 10 | 07 10 |
11時台 | 43 11 | 07 11 | 31 11 | 02 11 | 19 11 | 47 11 | 11 11 |
12時台 | 47 12 | 11 12 | 37 12 | 03 12 | 23 12 | 53 12 | 13 12 |
13時台 | 53 13 | 13 13 | 41 13 | 05 13 | 29 13 | 59 13 | 17 13 |
14時台 | 59 14 | 17 14 | 43 14 | 07 14 | 31 14 | 02 14 | 19 14 |
15時台 | 02 15 | 19 15 | 47 15 | 11 15 | 37 15 | 03 15 | 23 15 |
16時台 | 03 16 | 23 16 | 53 16 | 13 16 | 41 16 | 05 16 | 29 16 |
17時台 | 05 17 | 29 17 | 59 17 | 17 17 | 43 17 | 07 17 | 31 17 |
18時台 | 07 18 | 31 18 | 02 18 | 19 18 | 47 18 | 11 18 | 37 18 |
19時台 | 11 19 | 37 19 | 03 19 | 23 19 | 53 19 | 13 19 | 41 19 |
20時台 | 13 20 | 41 20 | 05 20 | 29 20 | 59 20 | 17 20 | 43 20 |
21時台 | 17 21 | 43 21 | 07 21 | 31 21 | 02 21 | 19 21 | 47 21 |
22時台 | 19 22 | 47 22 | 11 22 | 37 22 | 03 22 | 23 22 | 53 22 |
23時台 | 23 23 | 53 23 | 13 23 | 41 23 | 05 23 | 29 23 | 59 23 |