[CON-446] Macke(n) vom Linkchecker?

Gesperrt
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

[CON-446] Macke(n) vom Linkchecker?

Beitrag von Halchteranerin » So 2. Okt 2011, 21:17

Hallo,

ich wollte heute den Linkchecker wieder benutzen. Was mich stutzig machte: er meckerte eine verlinkte Datei an, die ich schon mal auf die Whitelist gesetzt hatte. Die Whitelist war aber leer. :evil: Als ich das wieder auf die Whitelist setzen wollte, kam der Eintrag im Errorlog zustande:

Code: Alles auswählen

[02-Oct-2011 09:37:08] /contenido/main.php?area=linkchecker&frame=4&contenido=840052a0e4f227aa3e9a75e2085c9105&action=linkchecker&mode=3&whitelist=dXBsb2FkL3BkZi9Bbm1lbGRlYm9nZW5fS0kucGRm MySQL error 1062: Duplicate entry 'upload/pdf/Anmeldebogen_KI.pdf' for key 'PRIMARY'
INSERT INTO con_pi_linkwhitelist VALUES ('upload/pdf/Anmeldebogen_KI.pdf', '1317541028')
Außerdem taucht auch in dem Bereich Links auf externe Quellen und nicht zugewiesene Links dieser Link zur PDF-Datei (und auch andere) doppelt auf, warum auch immer.
Aber wohin sind die Einträge von der Whitelist verschwunden?? Ich habe vor einiger Zeit ein Upgrade von 4.4.5 über 4.6.24 auf 4.8.15 gemacht, aber ich habe danach erst den Linkchecker ausprobiert. Ich habe nun aus der Tabelle con_pi_linkwhitelist die Einträge, die aus der Whitelist verschwunden waren, entfernt, und dann über den Linkchecker die wieder eingefügt, nun zeigt der Linkchecker momentan keine Fehler mehr an, aber das hatte ich auch schon vor ein paar Monaten und dann auf einmal tauchten die oben beschriebenen Probleme auf. Zeitbombe? :mrgreen:

Viele Grüße
Christa
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Macke(n) vom Linkchecker?

Beitrag von xmurrix » Mi 5. Okt 2011, 23:22

Hallo Christa,

es scheint am Timeout der Whitelist zu liegen. Sämtliche Einträge in der Whitelist Tabelle, die älter als 30 Tage sind, werden nicht berücksichtigt, sowohl beim Abarbeiten des Linkcheckers, als auch bei der Anzeige der Whitelist.

Lässt man den Linkchecker dann nach 30 Tagen nochmal durchlaufen, und will den als Fehler gefundenen Link, der schon in der Whitelist ist, in die Whitelist hinzufügen, lässt die Datenbank das Anlegen des neuen Eintrags nicht zu. Hier müsste man dann den Eintrag aktualisieren und nicht nochmal hinzufügen.

Wahrscheinlich ist auch eine Trennung von Mandanten und der Sprache in der Whitelist-Tabelle nötig.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: Macke(n) vom Linkchecker?

Beitrag von Halchteranerin » Mo 10. Okt 2011, 07:22

Hallo Murat,

irgendwie habe ich deine Antwort jetzt erst entdeckt, war aber die letzten beiden Tage auch weg.
xmurrix hat geschrieben:es scheint am Timeout der Whitelist zu liegen. Sämtliche Einträge in der Whitelist Tabelle, die älter als 30 Tage sind, werden nicht berücksichtigt, sowohl beim Abarbeiten des Linkcheckers, als auch bei der Anzeige der Whitelist.
Aber aus welchem Grund? Das ist doch für mich persönlich schwachsinnig, denn wenn ich etwas in der Whitelist habe, dann darum, weil ich das nicht wieder gecheckt haben möchte.
xmurrix hat geschrieben:Lässt man den Linkchecker dann nach 30 Tagen nochmal durchlaufen, und will den als Fehler gefundenen Link, der schon in der Whitelist ist, in die Whitelist hinzufügen, lässt die Datenbank das Anlegen des neuen Eintrags nicht zu. Hier müsste man dann den Eintrag aktualisieren und nicht nochmal hinzufügen.
Müsste oder kann man das auch tatsächlich. Denn bei der Whitelist sehe ich nichts mit aktualisieren, nur beim Linkchecker, und da nützt es mir zu diesem Zweck nichts, das nützt mir nur dann, wenn er etwas gefunden hat und ich meine, den Fehler behoben zu haben, um zu sehen, ob er auch tatsächlich behoben ist.
xmurrix hat geschrieben:Wahrscheinlich ist auch eine Trennung von Mandanten und der Sprache in der Whitelist-Tabelle nötig.
Gut, ich brauche das nicht, andere mögen vielleicht auch das brauchen. Aber das mit der 30-Tage-Frist ist vollkommener Blödsinn. :(

Viele Grüße
Christa
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Macke(n) vom Linkchecker?

Beitrag von xmurrix » Mo 10. Okt 2011, 22:15

Halchteranerin hat geschrieben:...Aber aus welchem Grund?...
Den Grund kann ich dir nicht sagen, vermutlich gab es den, da man ansonsten Gefahr laufen kann, Einträge in der Whitelist zu "vergessen", sozusagen als Datensatzleichen.
Halchteranerin hat geschrieben:...Müsste oder kann man das auch tatsächlich...
Meiner Meinung nach sollte der Linkchecker das Datum eines vorhandenen Eintrags in der Whitelist aktualisieren, sofern eine erneute Überprüfung diesen Links abarbeitet.

Du kannst mal folgendes probieren:

In der contenido/plugins/linkchecker/includes/include.linkchecker.php die Zeilen 197-198

Code: Alles auswählen

$sql = "SELECT url FROM " . $cfg['tab']['whitelist'] . " WHERE lastview < " . (time() + $iWhitelist_timeout) . "
		AND lastview > " . (time() - $iWhitelist_timeout);
ersetzen gegen

Code: Alles auswählen

$sql = "SELECT url FROM " . $cfg['tab']['whitelist'];
In der contenido/plugins/linkchecker/includes/include.linkchecker_whitelist.php die Zeilen 55-56

Code: Alles auswählen

$sql = "SELECT url, lastview FROM " . $cfg['tab']['whitelist'] . " WHERE lastview < " . (time() + $iWhitelist_timeout) . "
		AND lastview > " . (time() - $iWhitelist_timeout) . " ORDER BY lastview DESC";
ersetzen gegen

Code: Alles auswählen

$sql = "SELECT url, lastview FROM " . $cfg['tab']['whitelist'] . " ORDER BY lastview DESC";
Dann werden immer alle Einträge in der Whitelist berücksichtigt, egal wie alt sie sind. Vielleicht findet das auch seinen Weg in das nächste Release von CONTENIDO...

Gruß
Murat
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: Macke(n) vom Linkchecker?

Beitrag von Halchteranerin » Di 11. Okt 2011, 20:10

Ich hab's noch nicht getestet, aber eigentlich sollten wir das auch nach Bugs verschieben, oder?
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: [CON-446] Macke(n) vom Linkchecker?

Beitrag von Halchteranerin » Fr 14. Okt 2011, 07:42

So, ich habe die beiden Dateien geändert, wann könnte ich sehen, ob es so wie gewünscht funktioniert? In einem Monat, oder?
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: [CON-446] Macke(n) vom Linkchecker?

Beitrag von xmurrix » Fr 14. Okt 2011, 10:08

Ändere den Wert für die Gültigkeit der Einträge in der Whitelist von 30 Tagen auf 1 Minute.
In den Dateien

Code: Alles auswählen

contenido/plugins/linkchecker/includes/include.linkchecker.php
contenido/plugins/linkchecker/includes/include.linkchecker_whitelist.php
jeweils die Zeile

Code: Alles auswählen

$iWhitelist_timeout = 2592000; // 30 days
in

Code: Alles auswählen

$iWhitelist_timeout = 60; // 1 minute
Dann kannst du es gleich testen.
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: [CON-446] Macke(n) vom Linkchecker?

Beitrag von Halchteranerin » Fr 14. Okt 2011, 10:27

Hallo Murat,

ich habe die beiden Werte geändert, bin auf Content->Linkchecker->Übersicht gegangen, es wurde gemeldet, dass keine Fehler gefunden wurden, und in der Whitelist standen noch meine Einträge. Dann müsste das ok sein, oder? Und ich kann den Wert wieder auf 30 Tagen setzen, wobei das dann im Prinzip auch irrelevant geworden ist, wenn die Einträge sowieso nicht mehr gelöscht werden, oder?

Viele Grüße
Christa
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: [CON-446] Macke(n) vom Linkchecker?

Beitrag von xmurrix » Fr 14. Okt 2011, 10:31

Mit den Änderungen vom obrigen Beitrag hat der Wert in $iWhitelist_timeout keine Bedeutung mehr, da die Einträge in der Whitelist nicht mehr "verfallen".
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Gesperrt