在复制或move_uploaded_file之后重命名文件之前必须等待3秒

时间:2014-01-31 09:07:59

标签: php file-io

我对简单的PHP脚本有一种奇怪的行为。

当我尝试在move_uploaded_file之后重命名文件(与复制相同的行为)时,它会失败,因为该文件不是新文件夹(而move_uploaded_file返回true) 但是,如果在move_uploaded_file之后等待2 3秒,则重命名工作正常。

此代码失败:

$result = move_uploaded_file($temp_name, 'new_folder/'.$filename);
echo $result; //=> True
$result = rename('new_folder/'.$filename, 'new_new_folder/'.$filename);
echo $result; //=> False

此代码工作:

$result = move_uploaded_file($temp_name, 'new_folder/'.$filename);
echo $result; //=> True
sleep(3);
$result = rename('new_folder/'.$filename, 'new_new_folder/'.$filename);
echo $result; //=> True

我尝试在调用重命名之前列出new_folder的文件,在第一种情况下,它不返回文件,在第二种情况下,列出文件。

那里会发生什么?

我使用PHP-FPM和xcache。 (禁用xcache没有变化)

1 个答案:

答案 0 :(得分:1)

代码:

if(move_uploaded_file($temp_name, 'new_folder/'.$filename)) {
   echo $filename;
   $result = rename('new_folder/'.$filename, 'new_new_folder/'.$filename);
   echo $filename;
   echo $result;
   //=> True
 }