public static function run($scriptName) { $fileName = basename($scriptName) . '.lock'; $lockFile = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $fileName; self::$fileHandle = fopen($lockFile, 'wb'); if (!flock(self::$fileHandle, LOCK_EX | LOCK_NB)) { throw new InstanceAlreadyRunningException($scriptName); } }
public static function run($fileName, $callback) { $logger = new Logger($fileName); try { SingleInstance::run($fileName); } catch (InstanceAlreadyRunningException $e) { $logger->log('Already running'); self::$finished = true; exit(1); } $logger->log('Working'); register_shutdown_function([get_class(), 'shutdown'], $logger); try { $callback($logger); } catch (Exception $e) { $logger->log($e); $logger->log('Finished with errors'); self::$finished = true; exit(1); } $logger->log('Finished'); self::$finished = true; exit(0); }