protected function write_sql($sth) { $flock = new FileLock('db/lock'); if ($flock->lock($this->filename)) { $sth->execute(); $flock->unlock($this->filename); } else { throw new Exception('ファイルに書き込めませんでした。'); } }
$verbose = true; $target = NULL; FileLock::setDirectory($GLOBALS['TMP_PATH']); $lock = new FileLock('web-migrate'); if ($lock->isLocked() && Request::int('release_lock')) { $lock->release(); } if (Request::int('target')) { $target = (int) Request::int('target'); } $version = new DBSchemaVersion('studip'); $migrator = new Migrator($path, $version, $verbose); if (Request::submitted('start')) { ob_start(); set_time_limit(0); $lock->lock(array('timestamp' => time(), 'user_id' => $GLOBALS['user']->id)); $migrator->migrate_to($target); $lock->release(); $announcements = ob_get_clean(); $message = MessageBox::Success(_("Die Datenbank wurde erfolgreich migriert."), explode("\n", $announcements)); } $current = $version->get(); $migrations = $migrator->relevant_migrations($target); $template = $template_factory->open('web_migrate'); $template->set_attribute('current_page', _('Datenbank-Migration')); $template->set_attribute('current', $current); $template->set_attribute('target', $target); $template->set_attribute('migrations', $migrations); $template->set_attribute('lock', $lock); $template->set_attribute('message', $message); echo $template->render();