static function persistNamedRuns()
{
if (!isset($_ENV['dir.temp'])) {
return;
}
$tempDir = $_ENV['dir.temp'];
foreach (self::$namedRuns as $namedRun => $missedClasses) {
$namedRunDir = $_ENV['dir.temp'] . self::NAMED_RUNS_PATH;
$namedRunFile = $namedRunDir . $namedRun . self::PHP_EXTENSION;
if (!empty($missedClasses)) {
$tempNamedRunFile = '';
$tries = 0;
do {
$tempNamedRunFile = $namedRunFile . '.' . rand(0, 32768);
} while (file_exists($tempNamedRunFile));
if (file_exists($namedRunFile)) {
copy($namedRunFile, $tempNamedRunFile);
$file = fopen($tempNamedRunFile, 'a');
if (filesize($tempNamedRunFile) !== self::$namedRunFileSize) {
fclose($file);
unlink($tempNamedRunFile);
return;
}
} else {
if (!file_exists($namedRunDir)) {
mkdir($tempNamedRunFile);
}
$file = fopen($tempNamedRunFile, 'w');
}
foreach ($missedClasses as $class) {
$classInfo = self::$classesByClass[$class];
$fullName = $classInfo[self::NAME];
$path = self::$paths[$classInfo[self::PATH]];
$fileName = str_replace(self::dotSeparator, self::pathSeparator, $fullName) . self::CLASS_FILE_EXTENSION;
$classFile = $path . $fileName;
$code = rtrim(file_get_contents($classFile));
if (substr($code, -2) != '?' . '>') {
$code .= '?' . '>';
}
fwrite($file, $code);
}
fclose($file);
copy($tempNamedRunFile, $namedRunFile);
unlink($tempNamedRunFile);
}
}
}