Создание временного файла

Задача
Требуется файл для временного хранения данных.

Решение
Вызывайте функцию tmpfile(), если файл должен храниться только во время выполнения сценария:

$temp_fh = tmpfile();
// записываем некоторые данные во временный файл
fputs($temp_fh,"The current time is ".strftime('%c'));
// файл удаляется по окончании сценария
exit(1);

Если же требуется создать произвольный файл, но хранить его надо и после выполнения сценария, то имя файла надо сгенерировать с помощью функции tempnam(), а затем вызовите функцию fopen():

$tempfilename = tempnam('/tmp','data-');
$temp_fh = fopen($tempfilename,'w') or die($php_errormsg);
fputs($temp_fh,"The current time is ".strftime('%c'));
fclose($temp_fh) or die($php_errormsg);

Обсуждение
Функция tmpfile() создает файл с уникальным именем и возвращает его дескриптор. Файл удаляется, когда для данного файлового дескриптора вызывается функция fclose() или заканчивается выполнение сценария.

Во втором случае имя файла генерирует функция tempnam(). Она принимает два аргумента: первый это каталог, а второй – префикс имени файла.


Если каталог не существует или в него нельзя записывать, то функция tempnam() использует временный системный каталог, заданный переменной окружения TMPDIR в UNIX или переменной окружения TMP в Windows. Например:

$tempfilename = tempnam('/tmp','data-');
print "Temporary data will be stored in $tempfilename";
Temporary data will be stored in /tmp/data-GawVoL

Способ, которым PHP генерирует имена временных файлов, таков, что вызов функции tempnam() фактически создает нужный файл, но оставляет его пустым, если сценарий не открывает этот файл непосредственно. Это гарантирует, что никакая другая программа не создаст файл с тем же именем между вызовом функции tempnam() и вызовом функции fopen() для файла с данным именем.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Блокировка файла
Выбор случайной строки из файла
Запись в несколько файловых дескрипторов одновременно
Запись в стандартный поток вывода
Непосредственная модификация файла без временной копии

Вернуться в раздел: PHP / 18. Файлы