Library::persistNamedRuns PHP Method

persistNamedRuns() static public method

static public persistNamedRuns ( )
    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);
            }
        }
    }