Page MenuHomeWickedGov Phorge

TempFSFileFactory.php
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

TempFSFileFactory.php

<?php
namespace MediaWiki\FileBackend\FSFile;
use Wikimedia\AtEase\AtEase;
use Wikimedia\FileBackend\FSFile\TempFSFile;
/**
* @ingroup FileBackend
*/
class TempFSFileFactory {
/** @var string|null */
private $tmpDirectory;
/**
* @param string|null $tmpDirectory A directory to put the temporary files in, e.g.,
* $wgTmpDirectory. If null, we'll try to find one ourselves.
*/
public function __construct( $tmpDirectory = null ) {
$this->tmpDirectory = $tmpDirectory;
}
/**
* Make a new temporary file on the file system.
* Temporary files may be purged when the file object falls out of scope.
*
* @param string $prefix
* @param string $extension Optional file extension
* @return TempFSFile|null
*/
public function newTempFSFile( $prefix, $extension = '' ) {
$ext = ( $extension != '' ) ? ".{$extension}" : '';
$tmpDirectory = $this->tmpDirectory;
if ( !is_string( $tmpDirectory ) ) {
$tmpDirectory = TempFSFile::getUsableTempDirectory();
}
$attempts = 5;
while ( $attempts-- ) {
$hex = sprintf( '%06x%06x', mt_rand( 0, 0xffffff ), mt_rand( 0, 0xffffff ) );
$path = "$tmpDirectory/$prefix$hex$ext";
AtEase::suppressWarnings();
$newFileHandle = fopen( $path, 'x' );
AtEase::restoreWarnings();
if ( $newFileHandle ) {
fclose( $newFileHandle );
$tmpFile = new TempFSFile( $path );
$tmpFile->autocollect();
// Safely instantiated, end loop.
return $tmpFile;
}
}
// Give up
return null; // @codeCoverageIgnore
}
}

File Metadata

Mime Type
text/x-php
Expires
Fri, Jul 3, 20:27 (1 d, 12 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
b0/22/9bbc5d38ec4129e54e958d9cd6db
Default Alt Text
TempFSFileFactory.php (1 KB)

Event Timeline