Hi Leute!
Ich hab mal eine Verständnis-Frage.
Damit eure grauen Zellen nicht überstrapaziert werden, versuche ich mich in Kurz und Einfach. Und lasse bis auf Weiteres mal den Code außen vor. Ist ja erst Mal nur eine Verständnis-Frage.
Also: Mit Ajax lassen sich bekanntlich Daten dynamisch nachladen.
Mit einer solchen Funktion - Nennen wir sie AJAX-Funktion-1 - veranlasse ich PHP, den Index für eine selbstgebastelte Volltextsuche zu generieren. Das klappt soweit ganz gut.
Nun dachte ich, in dem AJAX-Script-1 einfach mal mittels setInterval() eine zweite AJAX-Funktion zu starten, die alle paar Sekunden den mengenmäßigen Zwischenstand der Volltext-Indexierungen abfragt und per DOM in die HTML-Seite einbaut. Das klappt auch, aber leider nicht fortlaufend, sondern immer erst dann, wenn die AJAX-Funktion-1 ihre Arbeit vollendet hat.
Nach langer Überlegung dachte ich mir - ah, klar! - MyIsam sperrt ja die Tabellen nicht auf zeilenbasis, sondern komplett. Und so würde meine zweite AJAX-Funktion, bzw. das sich dahinter befindliche PHP-Script gar nicht zum Zuge kommen. So eine Indexierung ballert innerhalb eines Wimpernschlags schon einige hundert Einträge in die Datenbank.
Und so habe ich in dem dazugehörigen PHP-Skript von der AJAX-Funktion-1 nach jeweils 10.000 Indexierungen veranlasst, einen mengenmäßigen Zwischenbericht in einen zweiten MySQL-Table zu schreiben.
Trotzdessen, liefert mir die zweite Funktion keine Zwischenergebnisse. Sie folgen immer erst dann, wenn die AJAX-Funktion-1 fertig ist. Und die nachfolgend angetrudelten Zwischenstände melden alle samt die gleich lautende Endsumme.
Ist das bei AJAX so, dass nicht mehrere Prozesse gleichzeitig stattfinden können?
Ich habe in den beiden AJAX-Funktionen den Aufruf des XHR-Objekts selbstverständlich gekapselt, sodass die eine Funktion nicht das Objekt der anderen zerstört. Und auch alle übrigen Variablen kommen sich einander nicht in die Quere.
Nun hab ich grad noch einen zweiten Test gemacht. Und zwar habe ich während PHP mit dem Schreiben des Volltext-Indexes beschäftigt war, die lokale Webseite in einem zweiten Browser-Tab aufgerufen um dort eine völlig andere Seite zu starten. Und die lädt sich trotz i7-Prozessors mit gerade mal 13-25% Auslastung einen Wolf.
Wenn jetzt jemand von euch sagt, das ist ein seltsames Verhalten, rücke ich selbstverständlich mit dem Code raus. Ansonsten - sofern es einfach nur einen banalen Grund gibt - möchte ich lieber die Ressourcen dieses Portals schonen, zumal die einzelnen Codeabschnitte doch recht groß sind.
Freue mich nun auf eure Antworten!!
Gruß Thor
Ich hab mal eine Verständnis-Frage.
Damit eure grauen Zellen nicht überstrapaziert werden, versuche ich mich in Kurz und Einfach. Und lasse bis auf Weiteres mal den Code außen vor. Ist ja erst Mal nur eine Verständnis-Frage.
Also: Mit Ajax lassen sich bekanntlich Daten dynamisch nachladen.
Mit einer solchen Funktion - Nennen wir sie AJAX-Funktion-1 - veranlasse ich PHP, den Index für eine selbstgebastelte Volltextsuche zu generieren. Das klappt soweit ganz gut.
Nun dachte ich, in dem AJAX-Script-1 einfach mal mittels setInterval() eine zweite AJAX-Funktion zu starten, die alle paar Sekunden den mengenmäßigen Zwischenstand der Volltext-Indexierungen abfragt und per DOM in die HTML-Seite einbaut. Das klappt auch, aber leider nicht fortlaufend, sondern immer erst dann, wenn die AJAX-Funktion-1 ihre Arbeit vollendet hat.
Nach langer Überlegung dachte ich mir - ah, klar! - MyIsam sperrt ja die Tabellen nicht auf zeilenbasis, sondern komplett. Und so würde meine zweite AJAX-Funktion, bzw. das sich dahinter befindliche PHP-Script gar nicht zum Zuge kommen. So eine Indexierung ballert innerhalb eines Wimpernschlags schon einige hundert Einträge in die Datenbank.
Und so habe ich in dem dazugehörigen PHP-Skript von der AJAX-Funktion-1 nach jeweils 10.000 Indexierungen veranlasst, einen mengenmäßigen Zwischenbericht in einen zweiten MySQL-Table zu schreiben.
Trotzdessen, liefert mir die zweite Funktion keine Zwischenergebnisse. Sie folgen immer erst dann, wenn die AJAX-Funktion-1 fertig ist. Und die nachfolgend angetrudelten Zwischenstände melden alle samt die gleich lautende Endsumme.
Ist das bei AJAX so, dass nicht mehrere Prozesse gleichzeitig stattfinden können?
Ich habe in den beiden AJAX-Funktionen den Aufruf des XHR-Objekts selbstverständlich gekapselt, sodass die eine Funktion nicht das Objekt der anderen zerstört. Und auch alle übrigen Variablen kommen sich einander nicht in die Quere.
Nun hab ich grad noch einen zweiten Test gemacht. Und zwar habe ich während PHP mit dem Schreiben des Volltext-Indexes beschäftigt war, die lokale Webseite in einem zweiten Browser-Tab aufgerufen um dort eine völlig andere Seite zu starten. Und die lädt sich trotz i7-Prozessors mit gerade mal 13-25% Auslastung einen Wolf.
Wenn jetzt jemand von euch sagt, das ist ein seltsames Verhalten, rücke ich selbstverständlich mit dem Code raus. Ansonsten - sofern es einfach nur einen banalen Grund gibt - möchte ich lieber die Ressourcen dieses Portals schonen, zumal die einzelnen Codeabschnitte doch recht groß sind.
Freue mich nun auf eure Antworten!!
Gruß Thor
[FRAGE] AJAX-Scripte blockieren sich einander. Normales Verhalten???
Aucun commentaire:
Enregistrer un commentaire