Recipe 18.3 Creating a Temporary File
18.3.1 Problem
You need a
file to temporarily hold some data.
18.3.2 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);
18.3.3 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-GawVoL
Because 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 won't create a file with the
same name between the time that you call tempnam(
) and the time you call fopen( ) with
the filename.
18.3.4 See Also
Documentation on tmpfile( ) at
http://www.php.net/tmpfile and on
tempnam( ) at
http://www.php.net/tempnam.
|