TYPO3 Plugin:

asynchronous_reference_indexing

Asynchrone Referenzindizierung für TYPO3

Delegiert die Aktualisierung des Referenzindex in eine asynchrone Warteschlange, die von CLI / Scheduler verarbeitet wird

Was bewirkt es?

Bietet drei Dinge:

  • Eine Override-Klasse für den DataHandler, die eine einzelne Methode updateRefIndex ersetzt, was zu einer on-the-fly-Indizierung, die übersprungen werden soll, anstatt an eine Warteschlange zu delegieren.
  • Eine SQL-Tabelle, die Aktualisierungen des Referenzindex in der Warteschlange speichert.
  • Ein CommandController, der über CLI ausgeführt werden kann, um die Indizierung von in der Warteschlange stehenden Referenzen zu verarbeiten ohne Timeout oder Probleme mit langen Wartezeiten.

Je nachdem, wie oft Ihre Redakteure Datensätze importieren, kopieren, löschen usw., kann dies zu Problemen führen zeitersparnis viele, viele Stunden Warten auf die Antwort des TYPO3-Backends.

Weitere Informationen zu den Performance-Aspekten finden Sie im folgenden Abschnitt "Hintergrund".

Installation

Nur über Packagist (oder über GitHub) erhältlich. Eine Installation über Composer wird empfohlen:

composer erfordert Namenslosscoder/asynchrone Referenz-Indexierung

Aktivieren Sie dann die Erweiterung in TYPO3. Dies kann mit einem CLI-Befehl erfolgen:

./typo3/cli_dispatch.phpsh extbase Erweiterung: asynchronous_reference_indexing installieren

Wort der Warnung

Wenn Sie den Referenzindex nicht aktualisieren, kann dies in einigen Fällen negative Auswirkungen auf Ihre Website haben im Frontend und Backend. Es wird empfohlen, einen Scheduler-Task oder Cronjob für den enthaltenen befehlssteuerung und stellen Sie die Frequenz auf einen sehr niedrigen Wert ein, z.B. einmal pro Minute. Die die Steuerung verwaltet eine Sperrdatei und verhindert parallele Ausführungen, so dass häufige Durchläufe sicher sind.

Mögliche Nebenwirkungen

Die verzögerte Aktualisierung des Referenzindex hat eine wesentliche Nebenwirkung: Wenn der Editor versucht, eine aufzeichnung, deren Beziehungen nicht indiziert wurden, kann eine entsprechende Warnung nicht angezeigt werden.

Der sekundäre Nebeneffekt ist die Auflistung der Beziehungen zwischen den Datensätzen. Solche Informationen werden nur aktualisiert, wenn die Befehlssteuerung läuft.

Das Frontend-Rendering sollte nicht negativ beeinflusst werden.

Hintergrund

Diese Community-Erweiterung gibt es nur aus einem Grund: die zunehmende Reaktionsfähigkeit des TYPO3 backend bei der Durchführung von Aufnahmeoperationen. Aufgrund der internen Struktur des ReferenceIndex ist der ReferenceIndex klasse in TYPO3, jede Datensatzvornahme, die möglicherweise Referenzen ändert, verursacht eine extreme menge des SQL-Verkehrs.

Zum Zeitpunkt der Erstellung dieses Dokuments (2016-12-04) kann das Problem wie folgt veranschaulicht werden:

  • Angenommen, Sie verwenden sys_category Beziehungen für 10.000 verschiedene Datensätze (von einer beliebigen Tabelle zu einer sys_category)
  • Aktualisieren, Importieren, Löschen oder Kopieren von Datensätzen, die auf diese sys_category verweisen, löst Index-Updates aus
  • Index-Update selbst kaskadiert, um alle 10.000 sys_category Datensätze für jeden von Ihnen bearbeiteten Datensatz zu verarbeiten
  • Abhängig von der Anzahl der von Ihnen bearbeiteten Datensätze kann dies zu Hunderttausenden von SQL-Anfragen führen

Es wurden jedoch bereits erhebliche Anstrengungen unternommen, um die Performance der Referenzindexerstellung zu verbessern, alle Verbesserungen sind zwangsläufig geringfügig, ohne dass die gesamte Referenzindizierung komplett neu geschrieben wird logik. Auch hier sind die Klassen ReferenceIndex und RelationHandler zum Zeitpunkt des Schreibens die folgenden gegenseitig voneinander abhängig und werden sich rekursiv gegenseitig anrufen, was die Leistung weiter verstärkt problem, das oben beschrieben wurde. Da diese technischen Herausforderungen nur sehr schwer zu bewältigen sind, ist diese Erweiterung wird als temporäre Lösung präsentiert, um die Reaktionsfähigkeit von Datensatzvorgängen in TYPO3 zu erhöhen aufwärts von 90% Reduzierung der Wandzeit.

Du hast das richtig gelesen. 90% - neun-null Prozent.

Kredit

Diese Arbeit und alle vorangegangenen Untersuchungen wurden von Systime unterstützt. Systime ist ein dänischer Online-Verlag, der sich auf "i-books" für den Bildungsmarkt spezialisiert hat, und sie hatten insbesondere bei der Referenzindizierung große Probleme.

Referenzen

(Leistungsprofile nicht verlinkt, da sie nicht permanent online sind)

Benötigen Sie schnelle Hilfe mit dieser Extension? Unser Team von erfahrenen TYPO3-Entwicklern löst Probleme unkompliziert und zum Stundensatz.

Verteilung:ASYNCHRONOUS_REFERENCE_INDEXING ist auf

0.02 % aller TYPO3 installiert.

  • 0.14 % aller TYPO3 7.6.x Installationen installiert

Aktualität:ASYNCHRONOUS_REFERENCE_INDEXING ist auf dem neusten Stand (v.unknown) bei

100 % aller TYPO3 Installationen

  • 0 % aller TYPO3 9.5.x Installationen
  • 0 % aller TYPO3 9.3.x Installationen
  • 0 % aller TYPO3 9.2.x Installationen
  • 0 % aller TYPO3 8.7.x Installationen
  • 0.14 % aller TYPO3 7.6.x Installationen
  • 0 % aller TYPO3 7.5.x Installationen
  • 0 % aller TYPO3 7.4.x Installationen
  • 0 % aller TYPO3 7.3.x Installationen
  • 0 % aller TYPO3 7.2.x Installationen
  • 0 % aller TYPO3 7.1.x Installationen
  • 0 % aller TYPO3 7.0.x Installationen
  • 0 % aller TYPO3 6.2.x Installationen
  • 0 % aller TYPO3 6.1.x Installationen
  • 0 % aller TYPO3 6.0.x Installationen
  • 0 % aller TYPO3 5.0.x Installationen
  • 0 % aller TYPO3 4.7.x Installationen
  • 0 % aller TYPO3 4.6.x Installationen
  • 0 % aller TYPO3 4.5.x Installationen
  • 0 % aller TYPO3 4.4.x Installationen
  • 0 % aller TYPO3 4.3.x Installationen
  • 0 % aller TYPO3 4.2.x Installationen
  • 0 % aller TYPO3 4.1.x Installationen
  • 0 % aller TYPO3 4.0.x Installationen
  • 0 % aller TYPO3 3.5.x Installationen

PHP Version:ASYNCHRONOUS_REFERENCE_INDEXING wird benutzt mit

  • 100 % PHP/7.0

Gosign-Responsive Index: TYPO3 Installationen nutzen ASYNCHRONOUS_REFERENCE_INDEXING zu

  • 62 % wenn der Gosign-Responsive-Index zwischen 80 % und 100 % ist
  • 25 % wenn der Gosign-Responsive-Index zwischen 60 % und 80 % ist
  • 12 % wenn der Gosign-Responsive-Index zwischen 40 % und 60 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 20 % und 40 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 0 % und 20 % ist

Pagespeed: TYPO3 Installationen nutzen ASYNCHRONOUS_REFERENCE_INDEXING zu

  • 62 % wenn der Pagespeed zwischen 80 % und 100 % ist
  • 12 % wenn der Pagespeed zwischen 60 % und 80 % ist
  • 25 % wenn der Pagespeed zwischen 40 % und 60 % ist
  • 0 % wenn der Pagespeed zwischen 20 % und 40 % ist
  • 0 % wenn der Pagespeed zwischen 0 % und 20 % ist


Stichprobe n=36989 von Gosign gecrawlte TYPO3-Seiten mit den Top-Level-Domains <.de/.ch/.at>