8

我正在尝试rename()使用 PHP 编写 900 KiB PDF 文件。由于某种原因,它需要很长时间才能重命名。我认为它应该是即时的。

这是在 CentOS 服务器上。在重命名文件时,我可以获得属性,并且似乎rename()正在复制旧文件并将其替换为新的重命名文件。

旧名称和新名称路径位于同一目录中。

有没有人偶然发现过这个问题?


代码:

    //If exists change name and then return path
    $pieces = explode("@", $filename);
    $newName = $pieces[0].' '.$pieces[2];

    rename($uidPath.$filename, $uidPath.$newName);

    if (preg_match('/pdf/', $pieces[2]))
    {
        $result['status'] = '1';
        $result['path'] = 'path to file';
    } 
    else 
    {
        $result['status'] = '1';
        $result['path'] = 'path to file';
    }
4

1 回答 1

3

出于某种原因,PHP 释放文件锁定的速度非常慢fclose(),因此如果您在移动文件之前写入文件,您可能需要稍等片刻。我在低优先级后台作业中遇到了这个问题,所以我并没有真正研究为什么会发生这种情况,或者我可以做些什么来防止它 - 我只是在fclose()and之间添加了 1 秒的睡眠时间rename

于 2012-10-23T19:51:53.257 回答