function lockDatabase() { // lock directory version based on http://docstore.mik.ua/oreilly/webprog/pcook/ch18_25.htm // but note mkdir returns TRUE if directory already exists! $locked = FALSE; // tidy up from possible locking errors if (is_dir(LOCK_DIRECTORY)) { // if lock directory is more than a few seconds old it wasn't deleted properly, so we'll delete it ourselves // not sure exactly how time changes work, but we can live with a possible twice // a year problem since locking is probably almost never needed if (time() - filemtime(LOCK_DIRECTORY) > 15) { unlockDatabase(); } } if (is_dir(LOCK_DIRECTORY)) { // locked already by someone else //rg2log("Directory exists ".date("D M j G:i:s T Y", filemtime(LOCK_DIRECTORY))); } else { // try to lock it ourselves //rg2log("Trying to lock"); $locked = mkdir(LOCK_DIRECTORY, 0777); } $tries = 0; while (!$locked && $tries < 5) { // wait 500ms up to 5 times trying to get a lock usleep(500000); if (is_dir(LOCK_DIRECTORY)) { // locked already by someone else $locked = FALSE; } else { // try to lock it ourselves $locked = mkdir(LOCK_DIRECTORY, 0777); } $tries++; //rg2log("Lock attempt ".$tries); } //rg2log("Lock status ".$locked); return $locked; }
function unlockDatabase($isdroptemp = true) { if ($isdroptemp && $tempDBName) { mysql_query("DROP DATABASE IF EXISTS`" . $tempDBName . "`"); } mysql_connection_insert(DATABASE); // Use logged into DB $res = mysql_query("delete from sysLocks where lck_Action='buildcrosswalks'"); // Remove sysLock } // Done inserting data into all tables in temp database (or actual database if new database). // If this spits out errors with unkonwn columns, look to see if createDefinitionsTablesOnly.sql has been brought // up to date with the structure of populateBlankDB.sql if ($errorCreatingTables) { // An error occurred while trying to create one (or more) of the tables, or inserting data into them if ($isNewDB) { echo "<br /><strong>An error occurred trying to insert data into the new database.</strong><br />"; } else { echo "<br /><strong>An error occurred trying to insert the downloaded data into the temporary database.</strong><br />"; } echo "This may be due to a database version mismatch, please advise the Heurist development team<br>"; unlockDatabase(); return; } else { if (!$isNewDB) { // do crosswalking for exisitn database, no action for new database require_once "createCrosswalkTable.php"; // offer user choice of fields to import unlockDatabase(false); } }
case 'title': $dataModel = new title(); $formatedRecords = displayTitle($dataModel, $_REQUEST["edit"], $_REQUEST["format"]); break; case 'titleplus': $dataModel = new titleplus(); $formatedRecords = displayTitlePlus($dataModel, $_REQUEST["edit"]); break; case 'import': $formatedRecords = importFile(); break; case 'reverseDB': $formatedRecords = reverseDatabase(); break; case 'unlockDB': $formatedRecords = unlockDatabase(); break; case 'report': $dataModel = new title(); $formatedRecords = report($dataModel); break; } } function report($dataModel) { //displayFormat.php?m=report&format=lblTitCurrColect //$editRequest = "178"; //, $format $title = $dataModel->getRecords(); switch ($_REQUEST['format']) { case 'lblTitCurrColect':