-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performanceupdate für URL Addon URLs #277
Conversation
Update basiert auf diesem PR: #272 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich kann das nicht beurteilen.
3 Funktionen und 1 Änderung an der Index-Tabelle? Das finde ich nicht gut. |
Soll ich eine einzige Funktion daraus machen? Der passende EP im URL Addon kommt. Hintergrund ist bei mir, dass ich in einem Projekt wenn die Übersetzungen fertig sind 1500 URLs habe und beim Conjob über der max_execution_time liege. Dann kann ich den Index nur noch manuell aufbauen. Mit diesem Update ist das Limit locker unterboten. |
Ja, das war mir schon klar, dass es ein konkretes Problem bei dir löst. |
Ich hol schon Mal Popcorn |
Definitiv. Der EP ist die Lösung. Die Diskussion läuft auch schon: tbaddade/redaxo_url#185 (comment). Der PR ist die Vorarbeit für den angedachten EP. |
lib/search_it.php
Outdated
if(rex_addon::get('search_it')->getConfig('index_url_addon') && search_it_isUrlAddOnAvailable()) { | ||
$sql = rex_sql::factory(); | ||
$sql->setQuery("SELECT url.url_hash, url.article_id, url.clang_id, url.profile_id, url.data_id FROM `". search_it_getUrlAddOnTableName() ."` as url " | ||
. "LEFT JOIN `". $this->tempTablePrefix ."search_it_index` AS search_it ON url.url_hash = search_it.fid " |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
muss jetzt überall 'self::getTempTablePrefix()' und 'self::getTablePrefix()' heissen. Das hatte Tim Filler geliefert letzte Woche...
Äh, sorry ich meinte nur in deinen geänderten Zeilen, das ändern... dann hätte man es mit der aktuellen einfach mergen können... Falls ich git richtig verstehe... |
lib/search_it.php
Outdated
@@ -106,8 +106,8 @@ function __construct($_clang = false, $_loadSettings = true, $_useStopwords = tr | |||
} | |||
|
|||
$this->setClang($_clang); | |||
$this->tablePrefix = rex::getTablePrefix(); | |||
$this->tempTablePrefix = rex::getTablePrefix().rex::getTempPrefix(); | |||
self::getTablePrefix() = rex::getTablePrefix(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das muss raus. Es ist ja keine statische memberVaribale mehr.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ist gemacht. Konflikt ist behoben.
Git merkt das, wenn in beiden Zweigen die gleichen Änderungen gemacht wurden. Ich hab mit den gesamten Commit angeschaut. Das müsste so funktionieren. Konflikte kann man ja sowieso mit "resolve conflicts" lösen. Wenn du möchtest, beschränke ich die Änderungen auf den neuen Code. |
kannst du das dann noch mal testen, wenn ich gemergt habe? |
Ja klar. |
Dieses Update stellt 3 neue Methoden in der
search_it
Klasse zur Verfügung. Alle drei vergleichen den SearchI It Index mit der URL Tabelle und beschränken den Update des Suchindex auf die gefundenen Änderungen:indexNewURLs()
: fügt neue URLs aus dem URL Addon zum Suchindex hinzuindexUpdatedURLs()
: aktualisiert aktualisierte URLs im SuchindexunindexDeletedURLs()
: löscht gelöschte URLs aus dem SuchindexDie Cronjob Klasse im PR nutzt diese Methoden und ist dadurch erheblich performanter. Außerdem bereitet dieser PR einen kommenden EP im URL Addon vor, der über Änderungen in der URL Tabelle informiert. Der EP teilt aber nicht mit, welche Änderungen dies sind.