Удаление временных файлов после использования

Несколько пулевых точек из предыдущего ответа :

  • Самое главное: относится ли адрес отправителя («От») к домену, который выполняется на сервере вы отправляете E-Mail? Если нет, сделайте это так. Никогда не используйте адреса отправителя, такие как xxx@gmail.com. Пользователь reply-to, если вам нужны ответы, чтобы получить другой адрес.
  • Является ли ваш сервер черным списком (например, проверьте IP на spamhaus.org)? Это возможность, когда вы находитесь на совместном хостинге, когда соседи ведут себя плохо.
  • Отправлены ли письма фильтром спама? Откройте учетную запись с freemailer с папкой спама и узнайте. Также попробуйте отправить почту на адрес без какой-либо фильтрации спама.
  • Возможно, вам нужен пятый параметр «-f» почты () для добавления адреса отправителя? (См. Команду mail () в руководстве по PHP)
  • Если у вас есть доступ к файлам журналов, проверьте их, конечно.
  • Вы проверяете адрес «from:» для возможных отсканировать письма («Возвращено отправителю»)? Вы также можете настроить отдельный адрес «error-to».

13
задан Matthias Meid 18 March 2009 в 17:36
поделиться

7 ответов

При попытке детерминировано очистить содержание Временной папки типа Файлов, Вы рискуете удалять файлы, которые используются другими процессами. Операционная система Windows обеспечивает инструменты, чтобы позволить пользователям удалять те файлы, когда доступное дисковое пространство объема достигает определенного порога.

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

5
ответ дан Ken Browning 19 March 2009 в 03:36
поделиться
  • 1
    Будьте осторожны..., некоторые символы могут генерировать проблему...., например, попробовать URL ()... () интерпретируются open..., необходимо инкапсулировать URL с '; o) – Whiler 19 October 2012 в 08:53

В.NET можно использовать TempFileCollection класс для руководящего ряда временных файлов, которые будут очищены приложением (Обратите внимание, что это скорее скрыто в пространстве имен CodeDom). Очевидно, Вы не можете удалить файлы, не принадлежавшие себе, потому что файлы могли бы все еще быть открыты другим приложением (и удаление их могло бы вызвать серьезные проблемы).

27
ответ дан Dirk Vollmar 19 March 2009 в 03:36
поделиться

Ответственность за чистку временных файлов должна быть на приложении, которое создало их. Это очень легко. Я использую класс, который выглядит примерно так:

public class TempFile : IDisposable
{
    public TempFile()
    { this.path = System.IO.Path.GetTempFileName(); }

    public void Dispose()
    { File.Delete(path); }

    private string path;
    public string Path { get { return path; } }
}

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

6
ответ дан Justin R. 19 March 2009 в 03:36
поделиться

Я полагаю, что они будут удалены, когда пользователь выйдет из системы.

Назад в дни, когда люди выключали свои ПК каждый день, который был, вероятно, идеальным решением.

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

кроме того, если они выключают свою машину, не закрывая тогда файлы, не будет удален также.

Вы могли использовать наблюдателя файловой системы, который наблюдает файл, который Вы пишете, и ожидаете в течение некоторого периода неактивности (10 minuites, 1 час, 1 день, или что когда-либо) и затем удаляете файл.

, Который не будет работать на все все же. Некоторые программы могут иметь "открытый" файл, но не могли бы заблокировать базовый файл. Если бы это происходит, то у Вас не было бы способа знать, когда безопасно удалить файл.

Однако я думаю, что можно, вероятно, просто проигнорировать проблему. У большинства людей, вероятно, есть излишек пространства на жестком диске так или иначе, таким образом, они, вероятно, вероятно, не столкнутся с ним. Если они делают, я думаю, что Windows открывается диалоговое окно недостаточного пространства на диске, которое дает им опцию очистить их временный каталог, который решил бы проблему.

Обновление:

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

нет никакой гарантии, что не будет проблем, но на практике я думаю, что это должно быть довольно редко.

Обновление 2:

Запрошенный комментарием, я пошел и на самом деле протестировал это, и похоже, что окна не удаляют временные файлы, когда пользователь выходит из системы. Однако я все еще говорю, что в случае OP, это не настоящая проблема. Когда это становится проблемой (потому что дисковое пространство является низким), Windows предложит пользователю удалять временные файлы.

1
ответ дан Scott Wisniewski 19 March 2009 в 03:36
поделиться
  • 1
    @Nate, спецификация языка C# имеет некоторые детали о том, как обрабатываются типы Nullable. It' s стоящий замечания, что типы Значения Nullable не являются структурами; структуры и Nullables являются и типами Значения, но компилятор и CLR предоставляют другое лечение каждому. go.microsoft.com/fwlink/?LinkId=199552 – Dan Bryant 20 May 2011 в 21:18

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

Решение, которое мы используем, - создать папку с именем на основе даты в изолированной области хранения пользователей и использовать ее в качестве сегодняшнего кеша. При закрытии и запуске приложения мы проверяем наличие устаревших папок кэша и удаляем их (и содержимое).

2
ответ дан 1 December 2019 в 17:55
поделиться

При использовании временных файлов в ASP.NET используйте событие PAGE_DISPOSED для удаления любых временных файлов, созданных вами на странице. В противном случае вы можете столкнуться с конфликтом с компонентами, которые не отпускаются до УТИЛИЗАЦИИ.

1
ответ дан 1 December 2019 в 17:55
поделиться
  • вы можете создать один временный файл, в который вы можете продолжать записывать имена файлов, созданные во время процесса, в конце обработки вы можете (предварительное условие - реализовать IDisposable и) удалить в Метод Disponse после завершения операции.

  • Другой способ - независимый от записи процесс, который выполняет очистку каждый интервал.

  • Прикрепите дату в конце файла и удалите в конце дня с этой датой, и процесс будет генерировать новые файлы с новой датой в конце.

  • одно хорошее предложение, данное divo tempfilecollection class.

надеюсь, что это поможет.

0
ответ дан 1 December 2019 в 17:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: