Ergebnis 1 bis 4 von 4
  1. #1
    basementmedia ist offline Grünschnabel
    registriert
    20-02-2015
    Beiträge
    2

    Eine aktive Ajax/Mysql-Abfrage stoppen

    Hallo zusammen,

    ich habe mit PHP/Javascript/Mysql ein kleines Zeiterfassungssystem geschrieben, über das man auch diverse Auswertungen fahren kann (z.B. welcher Mitarbeiter in welchem Zeitraum wieviele Stunden auf welches Projekt gebucht hat), etc.

    Der Ablauf ist der folgende:

    1. Der User wählt über eine Selectbox die gewünschte Auswertung (z.B. Stundenauswertung 2017)
    2. Eine Javascript-Funktion ruft (per AJAX) ein PHP-Skript auf, über das wiederum eine entsprechende Mysql-Abfrage gestartet wird, die sehr umfangreich sein kann.
    3. Das Ergebnis der Mysql-Abfrage wird per AJAX zurück zur Seite gespielt und in einer Tabelle angezeigt (ich nutze hierfür Bootstrap table von wenzhixin, sollte aber für diese Sache belanglos sein und nicht das Problem darstellen)

    Das alles funktioniert auch wunderbar, das Problem ist nur, wenn man eine Auswertung gestartet hat, und direkt danach über die Selectbox eine andere Auswertung auswählt, wird die CPU überfordert (der Server von allinkl.com wird quasi abgeschossen), da ja sofort wieder per AJAX das gleiche PHP Skript aufgerufen wird und erneut eine umfangreiche MYSQL-ABfrage gestartet wird, obwohl die vorher gestartete noch läuft.

    Ich hoffe, das ist halbwegs verständlich geschrieben ;-(

    Jedenfalls wäre meine Frage:
    Ist es möglich (z.B. per PHP / Mysql) eine zuvor angefragte SELECT-Anweisung zu stoppen bevor eine neue gestartet wird?
    Oder gibt es andere Möglichkeiten, zu verhindern, dass der Server überlastet wird?

    Beste Grüße

    Daniel

  2. #2
    Avatar von Dormilich
    Dormilich ist offline Kaiser
    registriert
    15-01-2010
    Beiträge
    1.288

    AW: Eine aktive Ajax/Mysql-Abfrage stoppen

    Ist es möglich (z.B. per PHP / Mysql) eine zuvor angefragte SELECT-Anweisung zu stoppen bevor eine neue gestartet wird?
    Meines Wissens nicht.

    Oder gibt es andere Möglichkeiten, zu verhindern, dass der Server überlastet wird?
    Herausfinden, warum ein Query so viele Ressourcen braucht.

  3. #3
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.672

    AW: Eine aktive Ajax/Mysql-Abfrage stoppen

    Du könntest irgendwie (z.B. in einer Datei auf dem Server o.ä.) speichern, ob gerade so eine große Abfrage läuft und dann die zweite entsprechend gar nicht starten.

  4. #4
    SteelWheel ist offline Haudegen
    registriert
    18-07-2012
    Beiträge
    600

    AW: Eine aktive Ajax/Mysql-Abfrage stoppen

    Hi Daniel,

    willst Du unterbinden, dass a) der klickende User eine weitere Anfrage feuert oder soll b) generell am Server die SELECT-Anweisung blockiert werden, wenn bereits ein User gefeuert hat?!

    zu a) Hier kannst Du simpel in JavaScript ein Flag vorweg setzen, was lediglich geprüft wird. Ist es gesetzt, wird brav gewartet. Platzierst Du das im local-/sessionStorage, macht der User auch keinen Unfug mit Reloads und klickt dann.

    zu b) Mmmhm ... LOCK TABLE per WRITE käme womöglich nicht in Frage. Dann würde ich wohl auch ähnlich kkapsner irgendwo 'ne pfiffige Datei droppen, die per file_exists() den Rest regelt ODER eine ständige Datei lediglich einliest und den Wert darin setzt/aufhebt (also wieder flaggt). Denk aber dran, dem User mitzuteilen, dass seine Anfrage abgewiesen wurde - "aus Gründen".

Ähnliche Themen

  1. Zugriff auf eine aktive instanz
    Von appovis im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 21-02-2012, 01:16
  2. Eine MySQL Abfrage, zwei Varianten: Gibt es nennenswerte Geschwindigkeitsvorteile?
    Von Kirschtomate im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 27-05-2011, 18:03
  3. mySQL DB-Abfrage
    Von lonely_hawk im Forum Serverseitige Programmierung
    Antworten: 23
    Letzter Beitrag: 06-02-2009, 15:27
  4. Antworten: 0
    Letzter Beitrag: 19-03-2008, 01:42
  5. MySQL Starten/stoppen/restarten
    Von DannyR im Forum Serverseitige Programmierung
    Antworten: 4
    Letzter Beitrag: 02-12-2003, 23:32

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •