Алекс Б.
4 сообщения
#14 лет назад
Приветствую!
Подскажите, пожалуйста, где можно найти php-скрипт, который при его запуске будет удалять файл, к примеру, /example/file.php
Спасибо.
Антон С.
1316 сообщений
#14 лет назад
В гугле!
Игорь Г.
44 сообщения
#14 лет назад

if(file_exists($file)) unlink($file);
Наталия Б.
1809 сообщений
#14 лет назад
<?php
unlink( '/example/file.php' );
?>

Если нет уверенности, что файл существует, желательно сделать проверку на существование
Антон С.
1316 сообщений
#14 лет назад
А также желательно сделать проверку на то, что файл удаляется там, где его можно удалить) а то еще так весь сайт сотрут ))
Роман П.
1599 сообщений
#14 лет назад
Цитата ("raznomir2"):
желательно сделать проверку на существование

нафига?
Наталия Б.
1809 сообщений
#14 лет назад
Цитата ("Crist"):
нафига?


Чтобы сообщения не лезли нехорошие.
Да и вообще код должен быть чистым, а не абы как.
Роман П.
1599 сообщений
#14 лет назад
raznomir2, т.е. @unlink() - уже не котируется?)
Наталия Б.
1809 сообщений
#14 лет назад
Цитата ("Crist"):
raznomir2, т.е. @unlink - уже не котируется?)


Что это за нечто?
Антон С.
1316 сообщений
#14 лет назад
>@unlink()
Ходят слухи, что подавление вывода, негативно влияет на производительность ) я лично не мерял )
Наталия Б.
1809 сообщений
#14 лет назад
Цитата ("Enkvist"):
Ходят слухи, что подавление вывода, негативно влияет на производительность ) я лично не мерял )


А!
Ну, я подобным не увлекаюсь.
Всегда считала, что лучше убирать прыщи с морды, нежели замазюкивать косметикой поверх.
Роман П.
1599 сообщений
#14 лет назад
Enkvist, unlink очень быстро работает, так что @unlink все используют без совершенно ненужной проверки существования файла перед его удалением.
Наталия Б.
1809 сообщений
#14 лет назад
Цитата ("Crist"):
@unlink все используют


Я не использую. Так что уже не все. :P
Антон С.
1316 сообщений
#14 лет назад
Вообще вывод ошибок есть только на тесте. Там пусть ругается. А вот на проде вывода ошибок нет и быть не может.
Наталия Б.
1809 сообщений
#14 лет назад
Цитата ("Enkvist"):
Там пусть ругается.


См. выше про прыщи и косметику.
Речь идет о тесте включительно.
Роман П.
1599 сообщений
#14 лет назад
Цитата ("raznomir2"):
Я не использую. Так что уже не все.

Ну, никто и не говорил, что вы гуру в пхп) не используйте на здоровье. Но просто для галочки поясню: unlink используют тогда, когда предполагается наличие файла, т.е. можно с уверенностью сказать, что в большинстве случаев файл существует. И именно еще поэтому @unlink предпочтительнее, так как работает всего одна функция, а у вас две (file_exists и unlink), что конечно же хуже)
Наталия Б.
1809 сообщений
#14 лет назад
Цитата ("Crist"):
Ну, никто и не говорил, что вы гуру в пхп) не используйте на здоровье


Так никто не говорил такое и про Вас. :P
Используйте на здоровье...
А пояснения не убедили, измерять качество кода тупо количеством используемых функций... хм...
Вадим Т.
3240 сообщений
#14 лет назад
Цитата ("raznomir2"):
Если нет уверенности, что файл существует, желательно сделать проверку на существование

Проверки существования файла недостаточно.
Нужно еще делать проверку того, можно ли его удалить. То есть проверять права доступа, и т.д.
А после удаления — еще и проверять результат выполнения операции удаления, чтобы знать, удалился ли файл на самом деле.

А если уж действительно стремиться к написанию качественного кода, при удалении файлов желательно еще и учитывать наличие возможных эксклюзивных блокировок, так как файл может быть залочен другим процессом.

И еще, для параноиков. Удаление файла может занять некоторое время. Иногда это может занять реально минуты, например если вдруг FS понадобится выполнить какие-либо внутренние оптимизационные операции. Я такое неоднократно наблюдал, на очень больших файлах (несколько гигабайт), в частности, на примонтируемых сетевых дисках. В этом случае времени, отведенного процессу (речь ведь идет о PHP?) может оказаться недостаточно. Поэтому, если позволяет задача, и если есть возможность выполнять удаление другим процессом (например поставить таск в очередь, реализованную, скажем, в аппликейшен сервере), то лучше отдавать эту операцию ему, а текущий процесс пусть продолжает выполнение своим чередом. Но это уже отдельная тема.
Наталия Б.
1809 сообщений
#14 лет назад
tvv,
Вадим Т.
3240 сообщений
#14 лет назад
Цитата ("Crist"):
И именно еще поэтому @unlink предпочтительнее, так как работает всего одна функция, а у вас две (file_exists и unlink), что конечно же хуже)

Это если все в порядке, то @unlink будет работать немного быстрее (на сколько-то там микросекунд, чем на самом деле можно пренебречь).
Но если например файл не существует, и его путаться удалить через @unlink, то на большинстве FS это будет намного медленнее, чем две функции по проверке наличия файла и затем его удаления. Ну что значит намного... будет медленнее примерно раз в 6, или в 10.