Linux(phpバージョン5.2.10-pl0-gentoo)で次の小さなphp
スニペットを実行していますgentoo
。
#!/usr/bin/php5
<?
class TestDaemon {
public function __construct(){
while (TRUE){
unset($aDate);
exec("date", $aDate);
print("date(\"d.m.y H:i:s\") yields: ".date("d.m.y H:i:s")." while 'date' yields $aDate[0].\n");
sleep(1);
}
}
}
$oDaemon = new TestDaemon();
?>
そして、生成される出力は次のとおりです。
date("d.m.y H:i:s") yields: 27.03.14 07:05:27 while 'date' yields Thu Mar 27 07:05:03 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:28 while 'date' yields Thu Mar 27 07:05:04 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:29 while 'date' yields Thu Mar 27 07:05:05 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:30 while 'date' yields Thu Mar 27 07:05:06 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:32 while 'date' yields Thu Mar 27 07:05:07 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:33 while 'date' yields Thu Mar 27 07:05:09 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:34 while 'date' yields Thu Mar 27 07:05:10 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:35 while 'date' yields Thu Mar 27 07:05:11 UTC 2014.
ご覧のとおり、時間は約オフです。24秒。別のマシン(同じOS、同じバージョンのPHP)では、このようなオフセットは見られません。
このオフセットの理由は何ですか?これはうるう秒の違いによるものですか?次に、どのシステムが正しい時間を提供しますか?php
代わりにLinuxシステム時間を使用しないのはなぜですか?
また、同じシステムでmysqlデータベースを操作するときに、この時間オフセットが問題の原因になることはありますか?
これは、/ bin / dateを実行するシェルが「正しい」タイムゾーンを使用するように構成され、phpがPOSIX準拠のタイムゾーンを使用するように構成されているように見えます。差は25秒になるはずですが、tzデータが2年以上前のものである場合は、24秒になります。理由の写真については、http://www.ucolick.org/~sla/leapsecs/amsci.htmlにアクセスして、2番目のプロットを参照してください。「右」のゾーンは緑の線に従います。POSIXゾーンは、うるう秒ごとにシステムクロックを停止する必要があるため、青い線の下降階段をたどります。[どちらがどの方法を使用しているかを確認するために編集してください]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加