X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/89c556d16323138472f6c881ea96737a3e392435..186a633185c07622640792c8da0591d6c2f5a5f8:/utils/setup.php?ds=sidebyside diff --git a/utils/setup.php b/utils/setup.php index a7daa1fc..140319db 100755 --- a/utils/setup.php +++ b/utils/setup.php @@ -94,7 +94,7 @@ { echo "Create DB\n"; $bDidSomething = true; - $oDB =& DB::connect(CONST_Database_DSN, false); + $oDB = DB::connect(CONST_Database_DSN, false); if (!PEAR::isError($oDB)) { fail('database already exists ('.CONST_Database_DSN.')'); @@ -396,69 +396,37 @@ echo "Load Data\n"; $aDBInstances = array(); - $aQueriesPlacex = array(); - $aQueriesOsmline = array(); - // the query is divided into parcels, so that the work between the processes, i.e. the DBInstances, will be evenly distributed - $iNumberOfParcels = 100; - for($i = 0; $i < $iNumberOfParcels; $i++) + $iLoadThreads = max(1, $iInstances - 1); + for($i = 0; $i < $iLoadThreads; $i++) { + $aDBInstances[$i] =& getDB(true); $sSQL = 'insert into placex (osm_type, osm_id, class, type, name, admin_level, '; $sSQL .= 'housenumber, street, addr_place, isin, postcode, country_code, extratags, '; - $sSQL .= 'geometry) select * from place where osm_id % '.$iNumberOfParcels.' = '.$i.' and not '; - $sSQL .= '(class=\'place\' and type=\'houses\' and osm_type=\'W\' and ST_GeometryType(geometry) = \'ST_LineString\');'; - array_push($aQueriesPlacex, $sSQL); - $sSQL = 'select insert_osmline (osm_id, housenumber, street, addr_place, postcode, country_code, '; - $sSQL .= 'geometry) from place where osm_id % '.$iNumberOfParcels.' = '.$i.' and '; - $sSQL .= 'class=\'place\' and type=\'houses\' and osm_type=\'W\' and ST_GeometryType(geometry) = \'ST_LineString\''; - array_push($aQueriesOsmline, $sSQL); - } - - for($i = 0; $i < $iInstances; $i++) - { - $aDBInstances[$i] =& getDB(true); - } - // now execute the query blocks, in the first round for placex, then for osmline, - // because insert_osmline depends on the placex table - echo 'Inserting from place to placex.'; - $aQueries = $aQueriesPlacex; - for($j = 0; $j < 2; $j++) - { - $bAnyBusy = true; - while($bAnyBusy) + $sSQL .= 'geometry) select * from place where osm_id % '.$iLoadThreads.' = '.$i; + $sSQL .= " and not (class='place' and type='houses' and osm_type='W' and ST_GeometryType(geometry) = 'ST_LineString')"; + if ($aCMDResult['verbose']) echo "$sSQL\n"; + if (!pg_send_query($aDBInstances[$i]->connection, $sSQL)) fail(pg_last_error($oDB->connection)); + } + // last thread for interpolation lines + $aDBInstances[$iLoadThreads] =& getDB(true); + $sSQL = 'select insert_osmline (osm_id, housenumber, street, addr_place, postcode, country_code, '; + $sSQL .= 'geometry) from place where '; + $sSQL .= "class='place' and type='houses' and osm_type='W' and ST_GeometryType(geometry) = 'ST_LineString'"; + if ($aCMDResult['verbose']) echo "$sSQL\n"; + if (!pg_send_query($aDBInstances[$i]->connection, $sSQL)) fail(pg_last_error($oDB->connection)); + + $bAnyBusy = true; + while($bAnyBusy) + { + $bAnyBusy = false; + for($i = 0; $i <= $iLoadThreads; $i++) { - $bAnyBusy = false; - - for($i = 0; $i < $iInstances; $i++) - { - if (pg_connection_busy($aDBInstances[$i]->connection)) - { - $bAnyBusy = true; - } - else if (count($aQueries) > 0) - { - $query = array_pop($aQueries); - if (!pg_send_query($aDBInstances[$i]->connection, $query)) - { - fail(pg_last_error($oDB->connection)); - } - else - { - pg_get_result($aDBInstances[$i]->connection); - $bAnyBusy = true; - } - } - } - sleep(1); - echo '.'; - } - echo "\n"; - if ($j == 0) //for the second round with osmline - { - echo 'Inserting from place to osmline.'; - $aQueries = $aQueriesOsmline; + if (pg_connection_busy($aDBInstances[$i]->connection)) $bAnyBusy = true; } + sleep(1); + echo '.'; } - + echo "\n"; echo "Reanalysing database...\n"; pgsqlRunScript('ANALYSE'); } @@ -700,7 +668,7 @@ @symlink(CONST_BasePath.'/website/css', $sTargetDir.'/css'); echo "Symlinks created\n"; - $sTestFile = @file_get_contents(CONST_Website_BaseURL.'js/tiles.js'); + $sTestFile = @file_get_contents(CONST_Website_BaseURL.'js/nominatim-ui.js'); if (!$sTestFile) { echo "\nWARNING: Unable to access the website at ".CONST_Website_BaseURL."\n";