Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Mysql- Statement nach absetzen abbrechen??

Hi...

Ich habe unterschiedliche Abfragen, die der User selber eingeben kann. Wenn diese zu lange dauern, würd ich gern eine Abbruch-Funktion einbauen, die dann diese Abfrage abbricht.
Die Seite nicht mehr weiterladen (Stop-Button am Browser) stoppt leider nur die weitere Anzeige, aber mein MySQL Server arbeitet weiter. (Laut TOP)

Gibt es eine Funtion mit PHP, JAVASCRIPT oder sonstetwas, die das auch abbricht? Oder wie kann ich das Problem lösen.
Danke für die vielen Antworten

Andreas

Hier gehts zum Orginal Eintrag "Mysql- Statement nach absetzen abbrechen??" im Forum

Antworten

Ein SQL-Statement abzubrechen ist meines Wissens nach nicht möglich.


2.

Doppelte Einträge entfernt!


3.

Eventuell mit Hilfe von Savepoints. Ich habe aber leider keine Erfahrung auf diesem Gebiet: http://dev.mysql.com/doc/refman/5.1/de/transactional-commands.html

Edit: Die Seite könnte auch interessant sein: http://www.goldmann.de/php-51-abstraktion-und-prepared-statements-mit-pdo_tipp_346.html


4.

Hey... :)

Danke für die Antwort. Aber leider kommt ein aber...

Ich möchte gern ein einfaches Select - Anzeige Statement abbrechen, wenn es zu lange dauert :(
Das von dir verlinkte ist eher etwas um gemachte Veränderungen abzubrechen.

Trotzdem danke für deine Mühe!!

PS: Der zweite Link ist super interresant und die Infos darin werd ich auch noch nutzen... :);)


5.

Du kannst den Prozess, der für das Abarbeiten des SQL-Queries verantwortlich ist abbrechen.
Führ mal einen langen Query aus und schau dann mal in phpMyAdmin -> Prozesse.
Wenn phpMyAdmin ihn abbrechen kann, kannst du das logischerweise auch.

In der Prozesstabelle ist die Zeit und der SQL-Query gespeichert.

Natürlich musst du die Funktionalität, nach x Sekunden den Prozess zu beenden von deinem eigentlichen Aufruf entkoppeln.
Dazu solltest du einen neuen Prozess erzeugen, der zB 10 Sekunden schläft. Ist der Vater-Prozess (normal SQL ausführen) schneller fertig, beendet er den Kind-Prozess (schlafen und danach SQL Prozess beenden) mit. Ist das Kind schneller, beendet es den SQL-Prozess. Dein Vater-Prozess wird daraufhin mit einer Fehlermeldung, die du dann abfangen solltest abbrechen.

http://de.php.net/manual/en/function.pcntl-fork.php
http://de.php.net/manual/en/function.sleep.php


6.

Zitat:
McClane postete
Wenn phpMyAdmin ihn abbrechen kann, kannst du das logischerweise auch.

Ja das macht Sinn... :) Hab ich noch gar nicht gesehen, dass man sich das da anschauen kann.
Danke für den Denkanstoß. Werds mal damit versuchen.


Hier gehts zum Orginal Eintrag "Mysql- Statement nach absetzen abbrechen??" im Forum
 
phpforum.de | Impressum