18.2. Creating a Temporary File
Problem
You need a file to temporarily hold some data.
Solution
Use tmpfile( )
if the file needs to last only the duration
of the running script:
$temp_fh = tmpfile();
// write some data to the temp file
fputs($temp_fh,"The current time is ".strftime('%c'));
// the file goes away when the script ends
exit(1);If the file needs to last longer, generate a filename with
tempnam( )
, and then use 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);Discussion
The function tmpfile( ) creates a file with a
unique name and returns a file handle. The file is removed when
fclose( ) is called on that file handle, or the
script ends.
Alternatively, tempnam( ) generates a filename. It
takes two arguments: the first is a directory, and the second is a
prefix for the filename. If the directory doesn’t
exist or isn’t writeable, tempnam( ) uses the system temporary directory — the
TMPDIR environment variable in Unix or the
TMP environment variable in Windows. For example:
$tempfilename = tempnam('/tmp','data-');
print "Temporary data will be stored in $tempfilename";
Temporary data will be stored in /tmp/data-GawVoLBecause of the way PHP generates temporary filenames, the filename
tempnam( ) returns is actually created but left empty, even if your script never explicitly opens the file. This ensures another program ...