Удалить файлы с помощью подстановочного знака - exec vs unlink

Я работаю над php-скриптом, в котором хочу удалить некоторые файлы из заданной папки с помощью подстановочного знака (*).
Я нашел несколько рабочих примеров, таких как этот, где используются функции unlink() и glob().

Теперь мне интересно, можно ли также удалить файлы с помощью функции exec и такой команды, как rm -f /path/to/folder/_prefix_* ?
Есть ли какие-либо риски для безопасности при использовании этого?
И если это нормально, было бы лучше с точки зрения производительности?

РЕДАКТИРОВАТЬ:
Итак, из первых ответов я вижу, что действительно использование exec может быть приемлемым решением.
А как насчет проблем с производительностью? Есть ли шанс, что вариант exec может быть лучше (быстрее/менее требователен) по сравнению с методом glob/unlink?

заранее спасибо


person CdB    schedule 03.09.2012    source источник
comment
rm подойдет, вопросы безопасности зависят от того, кто может запускать скрипт.   -  person    schedule 04.09.2012


Ответы (2)


Поскольку ввод данных пользователем невозможен, нет проблем с безопасностью при использовании exec вместо glob/unlink. Однако использование glob/unlink позволяет вам определять исключения:

foreach(glob("delete/*") as $f) {
    if( $f == "delete/notme.txt") continue;
    unlink($f);
}

И exec часто отключается на общих серверах, поэтому glob/unlink более переносим. Если у вас есть специальная установка и вы не собираетесь от нее отказываться, вам не нужно об этом беспокоиться.

person Niet the Dark Absol    schedule 03.09.2012
comment
Спасибо за ответ Колинк. Я на собственном сервере, и exec включен и работает нормально. Как вы думаете, может ли это повлиять на производительность при использовании одной техники по сравнению с другой? - person CdB; 04.09.2012
comment
Я бы предположил, что exec быстрее, но glob/unlink позволяет сценарию всегда точно знать, что происходит - полезно для консольных приложений больше, чем для веб-приложений, но вы также можете получить отчет об ошибках для каждого файла или список удаленных файлов. .. - person Niet the Dark Absol; 04.09.2012

Оба варианта могут подойти. Однако, если вы не управляете собственным сервером или находитесь на виртуальном хостинге, команда exec может быть недоступна.

Чтобы быть на стороне сохранения, используйте glob и unlink.

person JvdBerg    schedule 03.09.2012