【问题标题】:Renaming a 900kb pdf file takes long time重命名 900kb 的 pdf 文件需要很长时间
【发布时间】:2012-10-08 07:48:41
【问题描述】:

我正在尝试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';
    }

【问题讨论】:

  • 重命名文件的过程是否会导致它从一个磁盘分区移动到另一个磁盘分区?
  • @MikeBrant 这个问题里写得很清楚:“旧名和新名路径在同一个目录下。”
  • 也许使用 exec() 调用 'mv filename newName' 会更好?
  • @pbvamsi 我不明白这些问题与这个问题有什么关系?

标签: php performance file-rename


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    相关资源
    最近更新 更多