什么会导致取消链接返回'资源暂时不可用'?

Way*_*neC 2 php amazon-s3 php-zip-archive

我想创建一个.zip存档,将其上传到Amazon S3,然后从服务器中删除创建的.zip.步骤1和2工作正常,但删除步骤返回:

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

我已经尝试了unset所有相关的变量和资源,但我仍然得到错误.

这是代码:

$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);
    }
}
Run Code Online (Sandbox Code Playgroud)

一些额外的细节:我正在使用Lumen 5.4和aws-sdk-php-laravel包.

任何见解都将非常感谢!谢谢.

小智 7

S3持有资源,所以我们必须强行清除gc(垃圾收集器).

只是gc_collect_cycles()在删除该文件之前.

  • 在我的情况下没有帮助(PHP 7.1). (2认同)