]> git.openstreetmap.org Git - nominatim.git/blobdiff - utils/setup.php
more tolerant regexp for parsing replication state directories
[nominatim.git] / utils / setup.php
index 42a132bf5c92aab4e93a067c6e8d925ed4a34c57..65c3d88aaf619df098a6025ec9467e8c4adcdffb 100755 (executable)
 
                        // Search for the correct state file - uses file timestamps so need to sort by date descending
                        $sRepURL = CONST_Replication_Url."/";
-                       $sRep = file_get_contents($sRepURL."?C=M;O=D");
+                       $sRep = file_get_contents($sRepURL."?C=M;O=D;F=1");
                        // download.geofabrik.de:    <a href="000/">000/</a></td><td align="right">26-Feb-2013 11:53  </td>
-                       // planet.openstreetmap.org: <a href="273/">273/</a>                    22-Mar-2013 07:41    -
-                       preg_match_all('#<a href="[0-9]{3}/">([0-9]{3}/)</a>.*(([0-9]{2})-([A-z]{3})-([0-9]{4}) ([0-9]{2}):([0-9]{2}))#', $sRep, $aRepMatches, PREG_SET_ORDER);
-                       $aPrevRepMatch = false;
-                       foreach($aRepMatches as $aRepMatch)
+                       // planet.openstreetmap.org: <a href="273/">273/</a>                    2013-03-11 07:41    -
+                       preg_match_all('#<a href="[0-9]{3}/">([0-9]{3}/)</a>\s*([-0-9a-zA-Z]+ [0-9]{2}:[0-9]{2})#', $sRep, $aRepMatches, PREG_SET_ORDER);
+                       var_dump($aRepMatches);
+                       if ($aRepMatches)
                        {
-                               if (strtotime($aRepMatch[2]) < $iLastNodeTimestamp) break;
-                               $aPrevRepMatch = $aRepMatch;
-                       }
-                       if ($aPrevRepMatch) $aRepMatch = $aPrevRepMatch;
-
-                       $sRepURL .= $aRepMatch[1];
-                       $sRep = file_get_contents($sRepURL."?C=M;O=D");
-                       preg_match_all('#<a href="[0-9]{3}/">([0-9]{3}/)</a>.*(([0-9]{2})-([A-z]{3})-([0-9]{4}) ([0-9]{2}):([0-9]{2}))#', $sRep, $aRepMatches, PREG_SET_ORDER);
-                       $aPrevRepMatch = false;
-                       foreach($aRepMatches as $aRepMatch)
-                       {
-                               if (strtotime($aRepMatch[2]) < $iLastNodeTimestamp) break;
-                               $aPrevRepMatch = $aRepMatch;
+                               $aPrevRepMatch = false;
+                               foreach($aRepMatches as $aRepMatch)
+                               {
+                                       if (strtotime($aRepMatch[2]) < $iLastNodeTimestamp) break;
+                                       $aPrevRepMatch = $aRepMatch;
+                               }
+                               if ($aPrevRepMatch) $aRepMatch = $aPrevRepMatch;
+
+                               $sRepURL .= $aRepMatch[1];
+                               $sRep = file_get_contents($sRepURL."?C=M;O=D;F=1");
+                               preg_match_all('#<a href="[0-9]{3}/">([0-9]{3}/)</a>\s*([-0-9a-zA-Z]+ [0-9]{2}:[0-9]{2})#', $sRep, $aRepMatches, PREG_SET_ORDER);
+                               var_dump($aRepMatches);
+                               $aPrevRepMatch = false;
+                               foreach($aRepMatches as $aRepMatch)
+                               {
+                                       if (strtotime($aRepMatch[2]) < $iLastNodeTimestamp) break;
+                                       $aPrevRepMatch = $aRepMatch;
+                               }
+                               if ($aPrevRepMatch) $aRepMatch = $aPrevRepMatch;
+
+                               $sRepURL .= $aRepMatch[1];
+                               $sRep = file_get_contents($sRepURL."?C=M;O=D;F=1");
+                               preg_match_all('#<a href="[0-9]{3}.state.txt">([0-9]{3}).state.txt</a>\s*([-0-9a-zA-Z]+ [0-9]{2}:[0-9]{2})#', $sRep, $aRepMatches, PREG_SET_ORDER);
+                               var_dump($aRepMatches);
+                               $aPrevRepMatch = false;
+                               foreach($aRepMatches as $aRepMatch)
+                               {
+                                       if (strtotime($aRepMatch[2]) < $iLastNodeTimestamp) break;
+                                       $aPrevRepMatch = $aRepMatch;
+                               }
+                               if ($aPrevRepMatch) $aRepMatch = $aPrevRepMatch;
+
+                               $sRepURL .= $aRepMatch[1].'.state.txt';
+                               echo "Getting state file: $sRepURL\n";
+                               $sStateFile = file_get_contents($sRepURL);
+                               if (!$sStateFile || strlen($sStateFile) > 1000) fail("unable to obtain state file");
+                               file_put_contents(CONST_BasePath.'/settings/state.txt', $sStateFile);
+                               echo "Updating DB status\n";
+                               pg_query($oDB->connection, 'TRUNCATE import_status');
+                               $sSQL = "INSERT INTO import_status VALUES('".$aRepMatch[2]."')";
+                               pg_query($oDB->connection, $sSQL);
                        }
-                       if ($aPrevRepMatch) $aRepMatch = $aPrevRepMatch;
-
-                       $sRepURL .= $aRepMatch[1];
-                       $sRep = file_get_contents($sRepURL."?C=M;O=D");
-                       preg_match_all('#<a href="[0-9]{3}.state.txt">([0-9]{3}).state.txt</a>.*(([0-9]{2})-([A-z]{3})-([0-9]{4}) ([0-9]{2}):([0-9]{2}))#', $sRep, $aRepMatches, PREG_SET_ORDER);
-                       $aPrevRepMatch = false;
-                       foreach($aRepMatches as $aRepMatch)
+                       else
                        {
-                               if (strtotime($aRepMatch[2]) < $iLastNodeTimestamp) break;
-                               $aPrevRepMatch = $aRepMatch;
+                               if (!$aCMDResult['all'])
+                               {
+                                       fail("Cannot read state file directory.");
+                               }
                        }
-                       if ($aPrevRepMatch) $aRepMatch = $aPrevRepMatch;
-
-                       $sRepURL .= $aRepMatch[1].'.state.txt';
-                       echo "Getting state file: $sRepURL\n";
-                       $sStateFile = file_get_contents($sRepURL);
-                       if (!$sStateFile || strlen($sStateFile) > 1000) fail("unable to obtain state file");
-                       file_put_contents(CONST_BasePath.'/settings/state.txt', $sStateFile);
-                       echo "Updating DB status\n";
-                       pg_query($oDB->connection, 'TRUNCATE import_status');
-                       $sSQL = "INSERT INTO import_status VALUES('".$aRepMatch[2]."')";
-                       pg_query($oDB->connection, $sSQL);
                }
        }