我可以假设PHP的time()和MySQL的NOW()是一样的吗?

时间:2013-08-20 23:29:25

标签: php mysql time crud

我正在创建一个对象的实例,同时在MySQL数据库上使用INSERT查询。数据库中的表有一个名为modified的字段,每当插入/更改行时都会自动更新。

当调用我的类的构造函数时,它将对象的属性设置为查询中使用的属性。我的问题是,我是否必须在新插入/更新的行上运行SELECT查询以获取其时间戳,或者我可以安全地假设PHP的time()函数将返回相同的值吗?

例如:

<?php
// Inside the __construct method of a class
static::query('
   INSERT INTO `table` (
      `name`,
      `content`
   )
   VALUES
      (
         "name",
         "content"
      );
');
   // During insertion, `modified` column is set to NOW()
$this->name = 'name';
$this->content = 'content';
$this->modified = time();
   // Can I count on this being reflected properly?
?>

我只能想到两种可能否定这种情况的可能性:(1)数据库位于具有不同本地时间的服务器上; (2)查询和time()函数调用之间的时间间隔(我严重怀疑它会产生1秒的差异......)。

获取更新时间是否值得花费SELECT查询,或者我是否应该坚持调用time()函数并冒险在下次选择行时冒{{1}在我的应用程序中,value可能与实例化时的值不同吗?

2 个答案:

答案 0 :(得分:1)

不,它们不一样,因为服务器的时间可能不同(可能只有几毫秒但可能是整个时区)并且处理中总是存在(很小但存在)延迟。

使用SELECT。

答案 1 :(得分:1)

没有

PHP和MySQL可以在两个不同的服务器上运行,即使它们在同一台服务器上运行,也可以为一个或另一个或两者微处理时区。选择一个时间源,PHP或MySQL,然后专门使用它。

此外,许多托管公司要么不知道或不关心他们的时钟,要知道他们往往没有正确配置ntpd而浮动。有些服务器每周漂浮几秒钟,其他服务器每天漂浮几分钟。