De situatie is dat ik een database bewerking moet doen die nogal lang duurt (letterlijk minuten). De bewerking start ik via een ajax call, waar ik verder niet op het resultaat wacht. Tegelijkertijd start ik een loop om elke zoveel seconde de voortgang te controleren en die ook op het scherm te laten zien aan de gebruiker.
Bij mijn weten is ajax asynchroon en zou je dus gewoon een volgende call moeten kunnen starten als de vorige nog niet compleet is. Op een andere pagina maak ik bijvoorbeeld 8 calls tegelijk, waarbij het duidelijk is dat die ook tegelijkertijd worden afgehandeld door de server (niet in mijn testomgeving lokaal overigens, maar wel op mijn VPS).
In dit geval werkt het echter niet. De check call krijgt pas een resultaat terug van de server als de eerste call helemaal is afgehandeld door de server. Met andere woorden, ik zie nog steeds geen progressie in het verloop. Mijn vraag is nu dus, waarom niet? Kan het door de database komen die door de vele inserts helemaal gelocked is? Mijn tabellen zijn InnoDB en dus zou er rowlocking moeten zijn, niet de gehele tabel.
4.228 views