У меня около 600 тысяч изображений в одном каталоге, и мне нужно удалить почти половину из них с помощью PHP. В одном массиве я сохранил имена файлов, которые необходимо удалить, и когда я пытаюсь пройтись по массиву и вызвать unlink($filename)
, сбой сервера после ~1k итераций, и я должен перезагрузить его (CentOS 7). Использование памяти PHP составляет 81 МБ, и это из-за большого массива, который я использовал, потому что он быстрее для некоторого сравнения с файлами в каталоге, не важно.
foreach($filenames as $filename){
// Deletes file
unlink($filename);
}
Я подумал, может, стоит попробовать exec()
, но он очень медленный, а через какое-то время тоже зависает. Я также видел здесь дискуссию о том, является ли он unlink()
асинхронным, но я думаю это не так.
Мне не нужны rmdir()
и удаление каталогов, потому что все 600k файлов находятся в одном каталоге, а отношения между файлами и сущностями в приложении хранятся в БД.
Есть ли другая альтернатива удалению файлов из PHP или какой-нибудь совет, как заставить это работать?