Не удается удалить PHP League\Flysystem при использовании readStream и writeStream

Я использую League\Flysystem для загрузки файлов на Amazon S3. После загрузки файла я хочу удалить файл с моего сервера. Сначала я использовал методы чтения и записи, а затем метод удаления, и он работал нормально. Поскольку у меня большие файлы, использование метода чтения не является хорошим решением, поскольку оно выделяет много памяти. Теперь я использую readStream и writeStream, но когда writeStream заканчивается, я закрываю поток, и метод delete возвращает false. Я также пытался использовать unlink, но файл до сих пор не удален. Похоже, файл используется другим процессом, но я не уверен, как его выпустить. Вот пример кода:

$client = S3Client::factory([
        'credentials' => [
            'key'    => AWS_ACCESS_KEY,
            'secret' => AWS_SECRET_KEY,
        ],
        'region' => 'eu-west-1',
        'version' => '2006-03-01',
    ]);

$s3 = new AwsS3Adapter($client, AWS_BUCKET);
$local = new Filesystem(new Adapter($localFolder));

$config = new Config();
$config->set("visibility", "private");

$readStream = $local->readStream($fileName);
$writeStream = $s3->writeStream($file, $readStream, $config);

if (is_resource($readStream))
{
    fclose($readStream);
}

if (is_resource($writeStream))
{
    fclose($writeStream);
}

$local->delete($fileName);

Я тоже попробовал это, без удачи:

$local = new Filesystem(new Adapter($localFolder), 0);

Я должен еще раз упомянуть, что при использовании методов чтения и записи удаление работало нормально.

0 ответов

Другие вопросы по тегам