先看一下基本的时间。

现在服务器上建立一个文件 time.php


[root@d10045105 tools]# touch time.php
[root@d10045105 tools]# stat time.php
  File: `time.php'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 807h/2055d      Inode: 119408329   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2010-08-06 15:56:01.000000000 +0800
Modify: 2010-08-06 15:56:01.000000000 +0800
Change: 2010-08-06 15:56:01.000000000 +0800
[root@d10045105 tools]# date
Fri Aug  6 15:56:04 CST 2010


编辑文件 vim time.php


"time.php" 5L, 24C written                                                                                       
[root@d10045105 tools]# stat time.php
  File: `time.php'
  Size: 24              Blocks: 8          IO Block: 4096   regular file
Device: 807h/2055d      Inode: 119409505   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2010-08-06 15:56:59.000000000 +0800
Modify: 2010-08-06 15:56:59.000000000 +0800
Change: 2010-08-06 15:56:59.000000000 +0800
[root@d10045105 tools]# date
Fri Aug  6 15:57:02 CST 2010


通过URL进行访问 url/tools/time.php, 再查看 time 的时间


[root@d10045105 tools]# stat time.php
  File: `time.php'
  Size: 24              Blocks: 8          IO Block: 4096   regular file
Device: 807h/2055d      Inode: 119409505   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2010-08-06 15:58:27.000000000 +0800
Modify: 2010-08-06 15:56:59.000000000 +0800
Change: 2010-08-06 15:56:59.000000000 +0800


由此可见,通过Apache的访问会改变文件的Access Time。那么文件包含的情况呢

修改time.php,设置一个$time变量,使用 include_time.php 包含 time.php文件,使用相对路径。先看一下两个文件的时间

Linux下文件时间的一些测试_文件时间

通过URL访问后的时间

Linux下文件时间的一些测试_服务器_02

可以看到两个文件的进入时间是一样的。有些Apache配置了APC或者其他的缓存机制,这样再重新刷新页面时,文件的时间并不会改变。


测试一下VFS进行代码部署和同步时的时间问题,现在本地创建类似的两个文件

创建后,部署到服务器上。

先查看中转机中文件的状态:

Linux下文件时间的一些测试_php_03

同时看了一下,内网代码发布机上文件的时间

Linux下文件时间的一些测试_php_04

在没有进行URL请求的时候,查看一下244.21服务器上的文件时间

Linux下文件时间的一些测试_服务器_05

可以看到在,rsync代码到生产环境的时候,保留了文件的创建时间,同时变动了修改时间和访问时间。下面做一次url访问。

时间发生了变化

Linux下文件时间的一些测试_文件时间_06

这是,重命名 time.php ,刷新页面,出现了白屏。日志错误为

Linux下文件时间的一些测试_服务器_07

这时重新发布一下两个文件,部署时显示两个文件没有修改,都没有被部署。

Linux下文件时间的一些测试_服务器_08

但是这个时候,中转机上的文件时间发生了变化。

Linux下文件时间的一些测试_php_09

这个时候,前端机器上的文件时间没有更改,文件也没有部署到。

Linux下文件时间的一些测试_php_10

也就是说,代码部署机从SVN获取代码时,认为代码没有更新,就没有去获取代码,但是却通知了转发机发送文件,其使用的文件是代码部署机上存放的代码。下图可见

Linux下文件时间的一些测试_文件时间_11

查看转发机种的发送日志,可以看到,多次部署的md5值保持不变,所以没有进行发送

Linux下文件时间的一些测试_服务器_12