Regina Schaukrug: Getestet...

Beitrag lesen


> ,ROUND( 6366.19773095 * ACOS( SIN(".$rad_lat1.") *SIN(RADIANS(ort1.geo_breite)) +COS(".$rad_lat1.") *COS(RADIANS(ort1.geo_breite)) *COS(RADIANS(ort1.geo_laenge) -".$rad_lon1." ))) distanz_km";

Problem:

  • Das kann nicht indexiert werden.

Lösung:

  • Ermittle erst einmal ein Viereck, dann geht die Abfrage mit größer und kleiner (Länge und Breite). Da kann der Index benutzt werden.
  • Schließe dann die Werte, die außerhalb des Kreises liegen innerhalb von php aus.
$b = floatval($_REQUEST['B']);
$l = floatval($_REQUEST['L']);
$umkreis = round(abs($_REQUEST['umkreis']));

$startTime = microtime(true);
$umkreis_l = $umkreis/71.12;
$umkreis_b = $umkreis/87.27;
$b_max     = $b + $umkreis_b;
$b_min     = $b - $umkreis_b;
$l_max     = $l + $umkreis_l;
$l_min     = $l - $umkreis_l;

$counter=0;
sql = "SELECT nr,ort,breite,laenge FROM geo WHERE laenge > \"$l_min \" AND laenge <  \"$l_max \" AND breite >  \"$b_min \" AND breite <  \"$b_max \" order by ort";
include("open.inc.php");
$result = mysqli_query($conn, $sql);
echo mysqli_error($conn)."<br>";
while ($row = mysqli_fetch_assoc($result)) {
    $b_diff = 87.27 * abs($b-$row['breite']);
    $l_diff = 71.11 * abs($l-$row['laenge']);
    $entfernung = round(sqrt( $l_diff * $l_diff + $b_diff * $b_diff));
    if ($entfernung <= $umkreis) {
      echo "<td><a href=\"ortsinfo.php?nr=".$row['nr']."\">".$row['ort']."</a></td>";
      echo "<td>".$row['breite']."</td>";
      echo "<td>".$row['laenge']."</td>";
      echo "<td>".$entfernung." km</td>";
      echo "</tr>\n";
      $counter++;
    }
}

Das habe ich vor über 10 Jahren mal programmiert (heute würde ich manches besser machen) - es geht aber auch heute richtig schnell:

http://www.dbinterface.de/geo/

0 97

langer Query-String

Linuchs
  • sonstiges
  1. 0
    Regina Schaukrug
    1. 0
      Linuchs
      1. 0
        Regina Schaukrug
        • datenbank
        • php
        • sicherheit
      2. 0
        pl
        1. 2
          dedlfix
          1. 0
            Gunnar Bittersmann
            1. 0
              dedlfix
              1. 0
                Gunnar Bittersmann
                1. 0
                  dedlfix
                  1. 0
                    Gunnar Bittersmann
                    1. 0
                      dedlfix
                      1. 0
                        Gunnar Bittersmann
                        1. 0
                          dedlfix
                          1. 0
                            Gunnar Bittersmann
                        2. 0
                          Rolf B
                2. 2
                  Matthias Apsel
                  1. 0
                    Gunnar Bittersmann
                  2. 0
                    Gunnar Bittersmann
                    1. 0
                      Matthias Apsel
                      • menschelei
                      1. -1
                        Gunnar Bittersmann
                        1. 0
                          Gunnar Bittersmann
                          1. 0
                            Matthias Apsel
                          2. 0
                            Tabellenkalk
                        2. 0
                          Matthias Apsel
                          1. 0
                            MudGuard
                            1. 0
                              Gunnar Bittersmann
                  3. 0

                    Internationalisierung != Sprachversionierung

                    beatovich
                    1. 0
                      dedlfix
                      1. 0
                        beatovich
                      2. 0
                        Gunnar Bittersmann
                        1. 0
                          beatovich
                        2. 0
                          dedlfix
                          1. 0
                            beatovich
                            1. 0
                              Gunnar Bittersmann
                              1. 0
                                beatovich
                                1. 0
                                  Gunnar Bittersmann
                    2. 0
                      Gunnar Bittersmann
                      1. 0
                        beatovich
                        1. 0
                          Gunnar Bittersmann
                      2. 0
                        dedlfix
                        1. 0
                          Gunnar Bittersmann
                          1. 0
                            dedlfix
                            1. 0
                              Gunnar Bittersmann
                      3. 0
                        MudGuard
                        1. 0
                          Gunnar Bittersmann
                        2. 0
                          beatovich
                      4. 0
                        Rolf B
          2. 0
            pl
            1. 0
              dedlfix
              1. 0
                pl
                1. 0
                  dedlfix
                  1. 0
                    pl
                    1. 0
                      dedlfix
                      1. 0
                        pl
          3. 0
            pl
          4. 0
            Regina Schaukrug
            1. 0
              dedlfix
              1. 0

                fail2ban-config

                Regina Schaukrug
          5. -1
            Linuchs
            1. 0
              Matthias Apsel
              1. 0
                Rolf B
                1. 0
                  Matthias Apsel
            2. 0
              dedlfix
            3. 0
              Gunnar Bittersmann
              1. 2
                dedlfix
                1. 0
                  Gunnar Bittersmann
                  1. 0
                    Matthias Apsel
                  2. 2
                    dedlfix
                    1. 0
                      Gunnar Bittersmann
                      1. 0
                        Matthias Apsel
                      2. 1
                        dedlfix
                        1. 0
                          Gunnar Bittersmann
            4. 0
              pl
    2. 0
      Regina Schaukrug
  2. 0

    (Decoder)

    Regina Schaukrug
    • menschelei
    • sicherheit
    • webserver
  3. 0
    pl
  4. 0

    Getestet...

    Regina Schaukrug
    • datenbank
    • sicherheit
    1. 0
      dedlfix
      1. 0
        Regina Schaukrug
    2. 0
      Linuchs
      1. 0

        Fehlermeldung

        Regina Schaukrug
        1. 0
          Linuchs
      2. 0
        Regina Schaukrug
        • datenbank
        • php
        1. 0
          dedlfix
          1. 0
            Regina Schaukrug
            • datenbank
            1. 0
              Matthias Apsel
              • sonstiges
              1. 1
                Regina Schaukrug
                1. 0
                  Matthias Apsel
                2. 0
                  Tabellenkalk
                  1. 0
                    dedlfix
        2. 0
          Linuchs
          1. 0
            dedlfix
            1. 0
              Regina Schaukrug
          2. 0
            Regina Schaukrug
      3. 0
        Rolf B
  5. 0
    pl