2017-08-30 71 views
0

.zipアーカイブを作成してAmazon S3にアップロードし、作成した.zipをサーバーから削除したいと考えています。ステップ1と2は素晴らしい作業しているが、削除のステップが戻っている:私はunset関連するすべての変数およびリソースに試したunlinkが 'Resource Temporarily Unavailable'を返す原因は何ですか?

unlink(temp/file.zip): Resource temporarily unavailable

が、私はまだエラーを取得しています。

$zipFile = 'temp/file.zip'; 

// create the zip archive: 
$z = new \ZipArchive(); 
$z->open($zipFile, \ZipArchive::CREATE); 
$z->addEmptyDir('testdirectory'); 

// add a file 
$filename = 'fileName.txt'; 
$content = 'Hello World'; 
$z->addFromString('testdirectory/' . $filename, $content); 
$z->close(); 

// upload to S3 
$s3 = AWS::createClient('s3'); 
$result = $s3->putObject(array(
    'Bucket'  => 'my-bucket-name', 
    'Key'   => basename($zipFile), 
    'SourceFile' => $zipFile 
)); 

// check to see if the file was uploaded 
if ($result['@metadata']['statusCode'] == "200") { 
    $uploaded = true; 
} 

// delete the temp file 
if ($uploaded) { 
    unset($result); 
    unset($s3); 
    unset($z); 
    if (file_exists($zipFile)) { 
     unlink($zipFile); 
    } 
} 

いくつかの追加の詳細情報:

は、ここにコードだ私はルーメン5.4とAWS-SDK-PHP-laravelパッケージを使用しています。

洞察力があれば幸いです!ありがとう。

+0

'$ z-> close()'とは何ですか? 'bool'を返します。正常に終了しているかどうかを確認してください。 – BugHunterUK

+0

'$ z-> close();'は 'bool(true)'を返します – WayneC

+0

奇妙です。私はコード(S3なし)をテストし、それは私のために働いた。トリッキーなもの。 S3コードなしでスクリプトを実行して、それが機能するかどうか確認してください。 – BugHunterUK

答えて

2

S3はリソースを保持しているので、gc(ガベージコレクタ)を強制的にクリアする必要があります。

gc_collect_cycles()を削除してから削除してください。

+0

私の場合は助けになりませんでした(PHP 7.1)。 – BurninLeo

+0

私の場合に役立ちました(PHP 7.1.1) – DB1500

関連する問題