array('init-updates', '', 0, 1, 0, 0, 'bool', 'Set up database for updating'),
array('check-for-updates', '', 0, 1, 0, 0, 'bool', 'Check if new updates are available'),
- array('update-functions', '', 0, 1, 0, 0, 'bool', 'Update trigger functions to support differential updates'),
+ array('no-update-functions', '', 0, 1, 0, 0, 'bool', 'Do not update trigger functions to support differential updates (assuming the diff update logic is already present)'),
array('import-osmosis', '', 0, 1, 0, 0, 'bool', 'Import updates once'),
array('import-osmosis-all', '', 0, 1, 0, 0, 'bool', 'Import updates forever'),
array('no-index', '', 0, 1, 0, 0, 'bool', 'Do not index the new data'),
getCmdOpt($_SERVER['argv'], $aCMDOptions, $aResult, true, true);
if (!isset($aResult['index-instances'])) $aResult['index-instances'] = 1;
+
if (!isset($aResult['index-rank'])) $aResult['index-rank'] = 0;
date_default_timezone_set('Etc/UTC');
if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
$sOsm2pgsqlCmd .= ' -H ' . $aDSNInfo['hostspec'];
}
-$procenv = null;
+$aProcEnv = null;
if (isset($aDSNInfo['password']) && $aDSNInfo['password']) {
- $procenv = array_merge(array('PGPASSWORD' => $aDSNInfo['password']), $_ENV);
+ $aProcEnv = array_merge(array('PGPASSWORD' => $aDSNInfo['password']), $_ENV);
}
if (!is_null(CONST_Osm2pgsql_Flatnode_File) && CONST_Osm2pgsql_Flatnode_File) {
echo "and have set up CONST_Pyosmium_Binary to point to pyosmium-get-changes.\n";
fail('pyosmium-get-changes not found or not usable');
}
- if ($aResult['update-functions']) {
+ if (!$aResult['no-update-functions']) {
$sSetup = CONST_InstallPath.'/utils/setup.php';
$iRet = -1;
- passthru($argv[0].' '.$sSetup.' --create-functions --enable-diff-updates', $iRet);
+ passthru($sSetup.' --create-functions --enable-diff-updates', $iRet);
if ($iRet != 0) {
fail('Error running setup script');
}
}
pg_query($oDB->connection, 'TRUNCATE import_status');
- $sSQL = 'INSERT INTO import_status (lastimportdate, sequence_id, indexed) VALUES(';
- $sSQL .= "'".$sDatabaseDate."',".$aOutput[0].', true)';
+ $sSQL = "INSERT INTO import_status (lastimportdate, sequence_id, indexed) VALUES('";
+ $sSQL .= $sDatabaseDate."',".$aOutput[0].', true)';
if (!pg_query($oDB->connection, $sSQL)) {
fail('Could not enter sequence into database.');
}
// Import the file
$sCMD = $sOsm2pgsqlCmd.' '.$sNextFile;
echo $sCMD."\n";
- $iErrorLevel = runWithEnv($sCMD, $procenv);
+ $iErrorLevel = runWithEnv($sCMD, $aProcEnv);
if ($iErrorLevel) {
fail("Error from osm2pgsql, $iErrorLevel\n");
// import generated change file
$sCMD = $sOsm2pgsqlCmd.' '.$sTemporaryFile;
echo $sCMD."\n";
- $iErrorLevel = runWithEnv($sCMD, $procenv);
+ $iErrorLevel = runWithEnv($sCMD, $aProcEnv);
if ($iErrorLevel) {
fail("osm2pgsql exited with error level $iErrorLevel\n");
}
}
if ($aResult['index']) {
- $cmd = CONST_InstallPath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$aResult['index-instances'].' -r '.$aResult['index-rank'];
+ $sCmd = CONST_InstallPath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -P '.$aDSNInfo['port'].' -t '.$aResult['index-instances'].' -r '.$aResult['index-rank'];
if (isset($aDSNInfo['hostspec']) && $aDSNInfo['hostspec']) {
- $cmd .= ' -H ' . $aDSNInfo['hostspec'];
+ $sCmd .= ' -H ' . $aDSNInfo['hostspec'];
}
if (isset($aDSNInfo['username']) && $aDSNInfo['username']) {
- $cmd .= ' -U ' . $aDSNInfo['username'];
+ $sCmd .= ' -U ' . $aDSNInfo['username'];
}
- runWithEnv($cmd, $procenv);
+ runWithEnv($sCmd, $aProcEnv);
}
if ($aResult['import-osmosis'] || $aResult['import-osmosis-all']) {
$fCMDStartTime = time();
echo $sCMDImport."\n";
unset($sJunk);
- $iErrorLevel = runWithEnv($sCMDImport, $procenv);
+ $iErrorLevel = runWithEnv($sCMDImport, $aProcEnv);
if ($iErrorLevel) {
echo "Error executing osm2pgsql: $iErrorLevel\n";
exit($iErrorLevel);
$fCMDStartTime = time();
echo "$sThisIndexCmd\n";
- $iErrorLevel = runWithEnv($sThisIndexCmd, $procenv);
+ $iErrorLevel = runWithEnv($sThisIndexCmd, $aProcEnv);
if ($iErrorLevel) {
echo "Error: $iErrorLevel\n";
exit($iErrorLevel);
$oDB->query($sSQL);
echo date('Y-m-d H:i:s')." Completed index step for $sBatchEnd in ".round((time()-$fCMDStartTime)/60, 2)." minutes\n";
- $sSQL = 'UPDATE import_status SET indexed = true';
+ $sSQL = 'update import_status set indexed = true';
$oDB->query($sSQL);
}
if (!$aResult['import-osmosis-all']) exit(0);
}
}
-
-function runWithEnv($cmd, $env)
-{
- $fds = array(0 => array('pipe', 'r'),
- 1 => STDOUT,
- 2 => STDERR);
- $pipes = null;
- $proc = @proc_open($cmd, $fds, $pipes, null, $env);
- if (!is_resource($proc)) {
- fail('unable to run command:' . $cmd);
- }
-
- fclose($pipes[0]); // no stdin
-
- $stat = proc_close($proc);
- return $stat;
-}