MediaWiki master
TempFSFileFactory.php
Go to the documentation of this file.
1<?php
2
4
5use Wikimedia\AtEase\AtEase;
6
12 private $tmpDirectory;
13
18 public function __construct( $tmpDirectory = null ) {
19 $this->tmpDirectory = $tmpDirectory;
20 }
21
30 public function newTempFSFile( $prefix, $extension = '' ) {
31 $ext = ( $extension != '' ) ? ".{$extension}" : '';
32 $tmpDirectory = $this->tmpDirectory;
33 if ( !is_string( $tmpDirectory ) ) {
34 $tmpDirectory = TempFSFile::getUsableTempDirectory();
35 }
36
37 $attempts = 5;
38 while ( $attempts-- ) {
39 $hex = sprintf( '%06x%06x', mt_rand( 0, 0xffffff ), mt_rand( 0, 0xffffff ) );
40 $path = "$tmpDirectory/$prefix$hex$ext";
41 AtEase::suppressWarnings();
42 $newFileHandle = fopen( $path, 'x' );
43 AtEase::restoreWarnings();
44 if ( $newFileHandle ) {
45 fclose( $newFileHandle );
46 $tmpFile = new TempFSFile( $path );
47 $tmpFile->autocollect();
48 // Safely instantiated, end loop.
49 return $tmpFile;
50 }
51 }
52
53 // Give up
54 return null; // @codeCoverageIgnore
55 }
56}
57
59class_alias( TempFSFileFactory::class, 'MediaWiki\FileBackend\FSFile\TempFSFileFactory' );
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...