завдання
Потрібно файл для тимчасового зберігання даних.
Рішення
Викликайте функцію 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 () для файлу з такою назвою.