X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/db5e78c8792a62c5e2c4e6b18f12b0d55151b1ed..90a5d2301610142994e75311be8ef9ca4643aafb:/lib-php/admin/setup.php diff --git a/lib-php/admin/setup.php b/lib-php/admin/setup.php index 6fca7c3c..f8e360bb 100644 --- a/lib-php/admin/setup.php +++ b/lib-php/admin/setup.php @@ -57,11 +57,25 @@ setupHTTPProxy(); $bDidSomething = false; $oNominatimCmd = new \Nominatim\Shell(getSetting('NOMINATIM_TOOL')); -if (isset($aCMDResult['quiet']) && $aCMDResult['quiet']) { - $oNominatimCmd->addParams('--quiet'); -} -if ($aCMDResult['verbose']) { - $oNominatimCmd->addParams('--verbose'); + +// by default, use all but one processor, but never more than 15. +$iInstances = max(1, $aCMDResult['threads'] ?? (min(16, getProcessorCount()) - 1)); + +function run($oCmd) +{ + global $iInstances; + global $aCMDResult; + $oCmd->addParams('--threads', $iInstances); + if ($aCMDResult['ignore-errors'] ?? false) { + $oCmd->addParams('--ignore-errors'); + } + if ($aCMDResult['quiet'] ?? false) { + $oCmd->addParams('--quiet'); + } + if ($aCMDResult['verbose'] ?? false) { + $oCmd->addParams('--verbose'); + } + $oCmd->run(true); } @@ -81,7 +95,7 @@ $oSetup = new SetupFunctions($aCMDResult); // go through complete process if 'all' is selected or start selected functions if ($aCMDResult['create-db'] || $aCMDResult['all']) { $bDidSomething = true; - (clone($oNominatimCmd))->addParams('transition', '--create-db')->run(true); + run((clone($oNominatimCmd))->addParams('transition', '--create-db')); } if ($aCMDResult['setup-db'] || $aCMDResult['all']) { @@ -92,7 +106,7 @@ if ($aCMDResult['setup-db'] || $aCMDResult['all']) { $oCmd->addParams('--no-partitions'); } - $oCmd->run(true); + run($oCmd); } if ($aCMDResult['import-data'] || $aCMDResult['all']) { @@ -104,7 +118,7 @@ if ($aCMDResult['import-data'] || $aCMDResult['all']) { $oCmd->addParams('--drop'); } - $oCmd->run(true); + run($oCmd); } if ($aCMDResult['create-functions'] || $aCMDResult['all']) { @@ -131,12 +145,13 @@ if ($aCMDResult['create-partition-functions'] || $aCMDResult['all']) { if ($aCMDResult['import-wikipedia-articles'] || $aCMDResult['all']) { $bDidSomething = true; + // ignore errors! (clone($oNominatimCmd))->addParams('refresh', '--wiki-data')->run(); } if ($aCMDResult['load-data'] || $aCMDResult['all']) { $bDidSomething = true; - $oSetup->loadData($aCMDResult['disable-token-precalc']); + run((clone($oNominatimCmd))->addParams('transition', '--load-data')); } if ($aCMDResult['import-tiger-data']) { @@ -152,12 +167,17 @@ if ($aCMDResult['calculate-postcodes'] || $aCMDResult['all']) { if ($aCMDResult['index'] || $aCMDResult['all']) { $bDidSomething = true; - $oSetup->index($aCMDResult['index-noanalyse']); + $oCmd = (clone($oNominatimCmd))->addParams('transition', '--index'); + if ($aCMDResult['index-noanalyse'] ?? false) { + $oCmd->addParams('--no-analyse'); + } + + run($oCmd); } if ($aCMDResult['drop']) { $bDidSomething = true; - (clone($oNominatimCmd))->addParams('freeze')->run(true); + run((clone($oNominatimCmd))->addParams('freeze')); } if ($aCMDResult['create-search-indices'] || $aCMDResult['all']) { @@ -172,7 +192,7 @@ if ($aCMDResult['create-country-names'] || $aCMDResult['all']) { if ($aCMDResult['setup-website'] || $aCMDResult['all']) { $bDidSomething = true; - (clone($oNominatimCmd))->addParams('refresh', '--website')->run(true); + run((clone($oNominatimCmd))->addParams('refresh', '--website')); } // ******************************************************