/** * Create a temporary file in a given directory. * * <p>The file denoted by the returned abstract pathname did not * exist before this method was invoked, any subsequent invocation * of this method will yield a different file name.</p> * * @param string $prefix prefix before the random number. * @param string $suffix file extension; include the '.'. * @param PhingFile $parentDir Directory to create the temporary file in; * sys_get_temp_dir() used if not specified. * @param boolean $deleteOnExit whether to set the tempfile for deletion on * normal exit. * @param boolean $createFile true if the file must actually be created. If false * chances exist that a file with the same name is created in the time * between invoking this method and the moment the file is actually created. * If possible set to true. * @return PhingFile a File reference to the new temporary file. * @throws BuildException */ public function createTempFile($prefix, $suffix, PhingFile $parentDir, $deleteOnExit = false, $createFile = false) { $result = null; $parent = $parentDir === null ? sys_get_temp_dir() : $parentDir->getPath(); if ($createFile) { try { $result = PhingFile::createTempFile($prefix, $suffix, new PhingFile($parent)); } catch (IOException $e) { throw new BuildException("Could not create tempfile in " . $parent, $e); } } else { do { $result = new PhingFile($parent, $prefix . substr(md5(time()), 0, 8) . $suffix); } while ($result->exists()); } if ($deleteOnExit) { $result->deleteOnExit(); } return $result; }
/** * try and create a temp file in our temp dir; this * checks that it has space and access. * We also do some clock reporting. * * @param PrintStream $out */ private static function doReportTempDir(PrintStream $out) { $tempdir = PhingFile::getTempDir(); if ($tempdir == null) { $out->println("Warning: php.tmpdir is undefined"); return; } $out->println("Temp dir is " . $tempdir); $tempDirectory = new PhingFile($tempdir); if (!$tempDirectory->exists()) { $out->println("Warning, php.tmpdir directory does not exist: " . $tempdir); return; } $now = time(); $tempFile = PhingFile::createTempFile('diag', 'txt', $tempDirectory); $fileWriter = new FileWriter($tempFile); $fileWriter->write('some test text'); $fileWriter->close(); $filetime = $tempFile->lastModified(); $tempFile->delete(); $out->println("Temp dir is writeable"); $drift = $filetime - $now; $out->println("Temp dir alignment with system clock is " . $drift . " s"); if (abs($drift) > 10) { $out->println("Warning: big clock drift -maybe a network filesystem"); } }