Veröffentlichungsdatum: 01. Juli 2015
Änderungsdatum: 09. Juli 2020
suche volltextsuche search wsearch index indizierung automatisch cronjob
Dieser Artikel beschreibt die Einstellungen für ein automatisches Indizieren der Suche über Cronjob.
Über folgendes Beispielskript können Sie die Volltextsuche mit einem
Cronjob indizieren. Mit der Option frequency =
"daily" wird die Indizierung nur zwischen 0:00 Uhr und 1:00 Uhr
gestartet. Wird das Script nicht innerhalb dieses Zeitraumes gestartet
wird die Indexierung gestartet, sobald das Script angestossen wird.
(Gilt für alle Frequencies). Nachdem das Skript eine definierte Anzahl
an URLs indiziert hat wird es beendet und führt die Indizierung beim
nächsten Aufruf weiter. Weitere Informationen zu dieser Einstellung
finden Sie weiter unten.
Sinnvoll ist ein Intervall von einer Minute bei einer Skriptlaufzeit von
30 bis 50 Sekunden. Ist die Indizierung dann beispielsweise um 2:00 Uhr
durchgeführt, wird das Skript zwar jede Minute gestartet, eine
Indizierung jedoch erst wieder am nächsten Tag um 0:00 Uhr durchgeführt.
Hinweis:
Beachten Sie bitte, dass das Intervall nicht kürzer als die
Skriptlaufzeit sein darf, da Skripte sonst mehrfach ausgeführt werden
können. Zudem gelten auch für die Cronjob gesteuerte Suchindexierung die Einstellungen zu "Timeout" und "Neu laden nach" in den Sucheeinstellungen.
Tipp:
Mit den Cron-Skripten können Sie ab CMS-Version 15 diverse Skripte wie z.B. für den Suchindex komfortabel verwalten und so über einen Cronjob ansprechen.
//Folgende Anweisung wurde aufgrund des direkten Aufrufes über das Perl-Script auskommentiert.
//$_SERVER[DOCUMENT_ROOT] = "/homepages/IHRPFAD";
// ggf. HTTP_HOST setzen, falls über Konsole/Cron nicht verfügbar:
//$_SERVER['HTTP_HOST'] = "IHRE-Domain.TLD"; // z.B. "www.domain.dd"
require_once($_SERVER['DOCUMENT_ROOT']."/weblication/grid.php");
$pathSearch = "/de/weblication/project/searchs/default.wSearchBot.php";
//Objekt erstellen
$wSearch = new wSearch($pathSearch);
$options = array();
$options['frequency'] = 'daily';
print $wSearch->cronjob($options);
// Das komplette Skript und Informationen finden Sie im Artikel
// der Framework-Funktion "wSearch->cronjob" nachfolgend beschrieben!
Beachten Sie bitte, dass sowohl der PHP-Pfad in der ersten Zeile als
auch die DOCUMENT_ROOT angepasst werden müssen. Diese Pfade können Sie
über die Funktion phpInfo() ermitteln.
Der Cronjob kann ab Version 003.022.000.000 auch über die Konsole
gestartet werden.
daily:
$options['frequency'] = "daily";
Die Indizierung wird nur zwischen 0:00 Uhr und 1:00 Uhr gestartet. Nachdem das Skript eine definierte Anzahl an URLs indiziert hat wird es beendet und führt die Indizierung beim nächsten Aufruf weiter.
Uhrzeit-Angabe:
$options['frequency'] = "12:15";
(Verfügbar ab Version 003.022.000.000)
Die Indizierung wird täglich um bzw. ab 12:15 Uhr gestartet (Uhrzeit kann individuell angegeben werden, 12:15 stellt ein Beispiel dar, möglich ist auch nur die Stundenangabe, z.B. "12"). Nachdem das Skript eine definierte Anzahl an URLs indiziert hat wird es beendet und führt die Indizierung beim nächsten Aufruf weiter.
interval:
$options['interval'] = "Sat|Sun";
(Verfügbar ab Version 003.022.000.000)
Diese Option kann zusätzlich zur frequency-Option gesetzt
werden.
Die Indizierung wird an dem Wochentag bzw. an den Wochentagen gestartet, die angeben sind
z.B.:
'Mon|Tue|Wed|Thu|Fri|Sat|Sun' -> Ausführung von Montag bis
Sonntag
'Mon|Fri' -> Ausführung Montag und Freitag
Die Indizierung wird nur zwischen 0:00 Uhr und 1:00 Uhr gestartet. Nachdem das Skript eine definierte Anzahl an URLs indiziert hat wird es beendet und führt die Indizierung beim nächsten Aufruf weiter.
now:
$options['frequency'] = "now";
Mit der Option frequency = "now", ist es möglich den Cronjob zu testen. Bei dieser Einstellung wird die Indexierung zu jedem Zeitpunkt aktiviert. Ist die Indexierung abgeschlossen, wird neu gestartet.
Diese Einstellung ist nur für Testzwecken sinnvoll und sollte nicht für die Standard-Cronjob-Indexierung verwendet werden.
export:
$options['frequency'] = "export";
Die Option frequency = "export" arbeitet wie die Option "daily".
Zusätzlich prüft das Script, ob im Projektverzeichnis eine export.txt
abliegt und stösst die Indizierung an, sofern diese Datei älter als 2
Minuten ist. Die Textdatei export.txt wird vom Modul
HTML-Export angelegt. Über diese Einstellung kann somit der Index auch
nach einem Export auf den aktuellen Stand gebracht werden.
Das Skript für die Suchindexierung läuft nur so lange, bis es an seinen Timeout kommt. Eine Suchindexierung über das Backend hingegen wird immer wieder per Javaskript neu angestossen.
Beim Cronjob ist es so, dass dieser das Skript in Intervallen immer wieder neu anstossen muss, um die ständige Suchindexierung zu ermöglichen. Einmal angestossen werden sonst nur wenige Seite aufgenommen und beim nächsten Mal (z.B. am nächsten Tag) wieder nur die nächsten (wenigen) Seiten.