]> git.openstreetmap.org Git - nominatim.git/commitdiff
more tolerant regexp for parsing replication state directories
authorSarah Hoffmann <lonvia@denofr.de>
Thu, 27 Nov 2014 21:23:04 +0000 (22:23 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Thu, 27 Nov 2014 21:23:04 +0000 (22:23 +0100)
Apache 2.4 has changed the date format, so that the current regexp
doesn't match anymore, so be more tolerant with the date format.
Also force less fancy output formatting without tables.

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);
                }
        }