MediaWiki master
TempFSFileFactory.php
Go to the documentation of this file.
1<?php
2
4
5use TempFSFile;
6use Wikimedia\AtEase\AtEase;
7
13 private $tmpDirectory;
14
19 public function __construct( $tmpDirectory = null ) {
20 $this->tmpDirectory = $tmpDirectory;
21 }
22
31 public function newTempFSFile( $prefix, $extension = '' ) {
32 $ext = ( $extension != '' ) ? ".{$extension}" : '';
33 $tmpDirectory = $this->tmpDirectory;
34 if ( !is_string( $tmpDirectory ) ) {
35 $tmpDirectory = TempFSFile::getUsableTempDirectory();
36 }
37
38 $attempts = 5;
39 while ( $attempts-- ) {
40 $hex = sprintf( '%06x%06x', mt_rand( 0, 0xffffff ), mt_rand( 0, 0xffffff ) );
41 $path = "$tmpDirectory/$prefix$hex$ext";
42 AtEase::suppressWarnings();
43 $newFileHandle = fopen( $path, 'x' );
44 AtEase::restoreWarnings();
45 if ( $newFileHandle ) {
46 fclose( $newFileHandle );
47 $tmpFile = new TempFSFile( $path );
48 $tmpFile->autocollect();
49 // Safely instantiated, end loop.
50 return $tmpFile;
51 }
52 }
53
54 // Give up
55 return null; // @codeCoverageIgnore
56 }
57}
newTempFSFile( $prefix, $extension='')
Make a new temporary file on the file system.
This class is used to hold the location and do limited manipulation of files stored temporarily (this...
static getUsableTempDirectory()