[PHP/MySQL] query stoppen na één minuut

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mr.inno
  • Registratie: April 2003
  • Laatst online: 14-09 18:19
we zijn bezig een script te maken waar mee de gebruiker zelf, via een gui, select queries kan loslaten op de database. Maar nu willen we afvangen dat een script langer als één minuut draait. Dit zou namelijk een veel te grote belasting zijn op het systeem.

We hebben al een aantal dingen geprobeerd:
  • set _time_limit() Maar php stopt dan pas na de mysql query.
  • ticks Maar deze telde mysql als 1 tick. (werkte ook niet)
  • AJAX Via ajax een second request laten lopen naar de server die kijkt of het proces al te lang draait. Maar firefox en IE8 beta wouden geen tweede request starten.
  • cronjob elke minuut Dit hebben we nu, maar we vrezen dat het systeem een backlog opbouwt en dan er mee ophoud.
alle bovenstaande kijken in de proces lijst van mysql en doen dan kill {id}.

Heeft iemand van jullie een theorie over hoe dit beter kan? of zou de cronjob de beste oplossing zijn.

inno


Acties:
  • 0 Henk 'm!

  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 10:46
timer met ticks buiten je query om?

dus je ticks van tevoren starten

you had me at EHLO


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Er is een reden waarom dergelijke queries niet zomaar afgekapt kunnen worden. Het zomaar killen van een lopende query kan de inhoud van de database behoorlijk corrupt maken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
gebruiker != DBA, dus maak er een fraaie interface voor. Heb je meteen meer controle over de query, zodat je tenminste iets met indexes etc. kan doen.

{signature}


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:07

TeeDee

CQB 241

Janoz schreef op dinsdag 08 april 2008 @ 10:31:
Er is een reden waarom dergelijke queries niet zomaar afgekapt kunnen worden. Het zomaar killen van een lopende query kan de inhoud van de database behoorlijk corrupt maken.
Ook als het alleen om select queries gaat?

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Zijn de queries niet in tijdelijke tabellen te stoppen? (ben de naam kwijt)

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
TeeDee schreef op dinsdag 08 april 2008 @ 10:47:
[...]

Ook als het alleen om select queries gaat?
Jan en alleman queries laten schrijven == dikke kans op copy to temp tables en andere grote operaties, welke je ten eerste uberhaupt wil vermijden en ten tweede niet zomaar wil killen nee.
Snake schreef op dinsdag 08 april 2008 @ 10:51:
Zijn de queries niet in tijdelijke tabellen te stoppen? (ben de naam kwijt)
Jan en alleman queries laten schrijven == alle optimalisatie opties de deur uit. Je kan ook niet std. alles in temp tables proppen, schiet je niets mee op. ;)

[ Voor 33% gewijzigd door Voutloos op 08-04-2008 11:23 ]

{signature}


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:07

TeeDee

CQB 241

Voutloos schreef op dinsdag 08 april 2008 @ 11:22:
[...]
Jan en alleman queries laten schrijven == dikke kans op copy to temp tables en andere grote operaties, welke je ten eerste uberhaupt wil vermijden en ten tweede niet zomaar wil killen nee.
Vind het sowieso al 'eng' om Jan en alleman (:P) queries op je db los te laten. Je zou nog het e.e.a. kunnen beperken tot views en daar een select op los te laten.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • mr.inno
  • Registratie: April 2003
  • Laatst online: 14-09 18:19
TheNymf schreef op dinsdag 08 april 2008 @ 10:28:
timer met ticks buiten je query om?

dus je ticks van tevoren starten
Dat hebben we geprobeert. deze werden meteen gestart, daarna kwam pas de query.
Voutloos schreef op dinsdag 08 april 2008 @ 10:34:
gebruiker != DBA, dus maak er een fraaie interface voor. Heb je meteen meer controle over de query, zodat je tenminste iets met indexes etc. kan doen.
Ze kunnen alleen maar via een interface werken. alle join opties enzo zijn gelimiteerd.
Maar dan nog kan de data zo groot zijn dat het veel te lang duurt.
Snake schreef op dinsdag 08 april 2008 @ 10:51:
Zijn de queries niet in tijdelijke tabellen te stoppen? (ben de naam kwijt)
Dit heeft geen nut. ze kunnen in bijna alle tabellen.


Ze kunnen overgens alleen maar SELECT doen.

inno


Acties:
  • 0 Henk 'm!

  • Atari Paul
  • Registratie: November 2002
  • Laatst online: 13:04
Je zou de queries kunnen controleren dmv een EXPLAIN, hiermee kun je wellicht queries uitsluiten die niet aan bepaalde voorwaarden voldoen. Het is echter geen garantie dat je binnen een bepaalde tijd blijft.

Stability ?? My Atari still has it :)


Acties:
  • 0 Henk 'm!

  • wjv
  • Registratie: December 2003
  • Laatst online: 19-09 10:10

wjv

In Oracle kan je 'cpu-time' per user sessie toewijzen, er ligt een (oud) request om dit in MySQL te implementeren :

http://bugs.mysql.com/bug.php?id=15250

Maar ik heb verder niets gevonden wat erop wijst dat dit in MySQL zit of gaat komen.

Acties:
  • 0 Henk 'm!

  • danuvius
  • Registratie: September 2004
  • Laatst online: 24-10-2023
Met het commando SHOW PROCESSLIST kan je per gebruiker opvragen hoelang ze in een bepaalde state (bv select statement) zijn. Met deze informatie moet je denk ik wel een beslissing kunnen nemen of deze afgeschoten moet worden. Is denk ik niet heel netjes, beetje een omweg, maar je komt wel waar je moet zijn ;)

Edit: Ben er nog niet helemaal uit of dit al geprobeerd was of niet, maar een simpelele cronjob/deamon process kan dit denk ik redelijk eenvoudig gebruikt worden om queries van een bepaalde gebruiker te monitoren en te stoppen indien nodig. Ik zie niet helemaal in waarom dit niet goed zou gaan.

[ Voor 28% gewijzigd door danuvius op 09-04-2008 13:40 ]

Pagina: 1