Ergebnis 1 bis 4 von 4
-
21-02-2018, 11:36 #1
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
-
21-02-2018, 15:00 #2
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?
Oder gibt es andere Möglichkeiten, zu verhindern, dass der Server überlastet wird?
-
23-02-2018, 09:10 #3
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.
-
27-02-2018, 12:41 #4
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
-
Zugriff auf eine aktive instanz
Von appovis im Forum JavaScriptAntworten: 2Letzter Beitrag: 21-02-2012, 01:16 -
Eine MySQL Abfrage, zwei Varianten: Gibt es nennenswerte Geschwindigkeitsvorteile?
Von Kirschtomate im Forum Serverseitige ProgrammierungAntworten: 2Letzter Beitrag: 27-05-2011, 18:03 -
mySQL DB-Abfrage
Von lonely_hawk im Forum Serverseitige ProgrammierungAntworten: 23Letzter Beitrag: 06-02-2009, 15:27 -
Programmierer gesucht für AJAX MySQL Abfrage und Schnittstellenintegration
Von killray im Forum JobsAntworten: 0Letzter Beitrag: 19-03-2008, 01:42 -
MySQL Starten/stoppen/restarten
Von DannyR im Forum Serverseitige ProgrammierungAntworten: 4Letzter Beitrag: 02-12-2003, 23:32
Lesezeichen