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()rename

于 2012-10-23T19:51:53.257 に答える