X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/1020a888346295466acc6cd3c366760f434d3f6c..b0c95231a6a946fd7b8a7373d1683e4c7d07c2ef:/utils/update.php diff --git a/utils/update.php b/utils/update.php index f7f20aa3..1f036ff0 100755 --- a/utils/update.php +++ b/utils/update.php @@ -68,6 +68,9 @@ if ($aResult['init-updates']) { } $sDatabaseDate = getDatabaseDate($oDB); + if ($sDatabaseDate === false) { + fail("Cannot determine date of database."); + } $sWindBack = strftime('%Y-%m-%dT%H:%M:%SZ', strtotime($sDatabaseDate) - (3*60*60)); @@ -239,9 +242,7 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) { while (true) { $fStartTime = time(); - $iFileSize = 1001; - - $aLastState = chksql($oDB->getRow('SELECT * FROM import_status')); + $aLastState = chksql($oDB->getRow('SELECT *, EXTRACT (EPOCH FROM lastimportdate) as unix_ts FROM import_status')); if (!$aLastState['sequence_id']) { echo "Updates not set up. Please run ./utils/update.php --init-updates.\n"; @@ -255,7 +256,7 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) { if ($aLastState['indexed'] == 't') { // Sleep if the update interval has not yet been reached. - $fNextUpdate = $aLastState['lastimportdate'] + CONST_Replication_Update_Interval; + $fNextUpdate = $aLastState['unix_ts'] + CONST_Replication_Update_Interval; if ($fNextUpdate > $fStartTime) { $iSleepTime = $fNextUpdate - $fStartTime; echo "Waiting for next update for $iSleepTime sec."; @@ -282,6 +283,23 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) { } } while ($iResult); + // get the newest object from the diff file + $sBatchEnd = 0; + $iRet = 0; + exec(CONST_BasePath.'/utils/osm_file_date.py '.$sImportFile, $sBatchEnd, $iRet); + if ($iRet == 5) { + echo "Diff file is empty. skipping import.\n"; + if (!$aResult['import-osmosis-all']) { + exit(0); + } else { + continue; + } + } + if ($iRet != 0) { + fail('Error getting date from diff file.'); + } + $sBatchEnd = $sBatchEnd[0]; + // Import the file $fCMDStartTime = time(); echo $sCMDImport."\n"; @@ -294,7 +312,6 @@ if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) { // write the update logs $iFileSize = filesize($sImportFile); - $sBatchEnd = getDatabaseDate($oDB); $sSQL = "INSERT INTO import_osmosis_log (batchend, batchseq, batchsize, starttime, endtime, event) values ('$sBatchEnd',$iEndSequence,$iFileSize,'".date('Y-m-d H:i:s', $fCMDStartTime)."','".date('Y-m-d H:i:s')."','import')"; var_Dump($sSQL); chksql($oDB->query($sSQL));