先看一下基本的时间。
现在服务器上建立一个文件 time.php
1 2 3 4 5 6 7 8 9 10 11
| > [root@d10045105 tools] [root@d10045105 tools] 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
1 2 3 4 5 6 7 8 9 10 11
| "time.php" 5L, 24C written [root@d10045105 tools] 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 的时间
1 2 3 4 5 6 7 8
| [root@d10045105 tools] 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文件,使用相对路径。先看一下两个文件的时间。
通过URL访问后的时间
可以看到两个文件的进入时间是一样的。有些Apache配置了APC或者其他的缓存机制,这样再重新刷新页面时,文件的时间并不会改变。
测试一下VFS进行代码部署和同步时的时间问题,现在本地创建类似的两个文件
创建后,部署到服务器上。
先查看中转机中文件的状态:
同时看了一下,内网代码发布机上文件的时间
在没有进行URL请求的时候,查看一下244.21服务器上的文件时间
可以看到在,rsync代码到生产环境的时候,保留了文件的创建时间,同时变动了修改时间和访问时间。下面做一次url访问。时间发生了变化。
这时,重命名 time.php ,刷新页面,出现了白屏。日志错误为:
这时重新发布一下两个文件,部署时显示两个文件没有修改,都没有被部署。
但是这个时候,中转机上的文件时间发生了变化。
这个时候,前端机器上的文件时间没有更改,文件也没有部署到。
也就是说,代码部署机从SVN获取代码时,认为代码没有更新,就没有去获取代码,但是却通知了转发机发送文件,其使用的文件是代码部署机上存放的代码。下图可见
查看转发机种的发送日志,可以看到,多次部署的md5值保持不变,所以没有进行发送