我正在尝试在同一文件系统上的目录之间移动文件。我遇到的困难是,当我使用rename()
时,文件系统上的文件的文件访问时间会发生变化。
我尝试将shell_exec()
与mv一起使用,但由于某种原因,当我以这种方式调用mv时,它会复制文件,然后删除需要更长时间的原始文件。
有没有办法在不改变访问时间的情况下快速移动文件?或者我可以在致电rename()
后将其更改回去吗?
答案 0 :(得分:1)
作为一般规则,当rename()
之类的函数或访问文件的任何其他函数执行此操作时,文件的访问时间必须。
至于更改文件的访问时间。这只能使用touch函数,如手册中所述:
bool touch ( string $filename [, int $time = time() [, int $atime ]] )
尝试将filename参数中指定的文件的访问和修改时间设置为及时给定的值。请注意,无论参数的数量如何,始终都会修改访问时间。
如您所见,时间参数在手册中描述为:
touch time
如果未提供时间,则使用当前系统时间。
以下是从文件一小时设置访问时间的同一页面的示例:
<?php
// This is the touch time, we'll set it to one hour in the past.
$time = time() - 3600;
// Touch the file
if (!touch('some_file.txt', $time)) {
echo 'Whoops, something went wrong...';
} else {
echo 'Touched file with success';
}
?>
但是,请注意触控功能,如尝试更改文件所述。如果您没有权限,例如该函数将返回false
。 (并且不会更改文件时间)
干杯
答案 1 :(得分:1)