Crawler macht Ärger und ich werde ihn nicht los.

Status
Für weitere Antworten geschlossen.
Versuch mal folgendes i die Routine einzubauen, die die Textdatei schreibt:

1. Prüfe, ob die Textdatei aktuell leer/gelöscht ist.
- wenn ja, überschreibe sie mit einem Backup

2. Datei schreiben/ändern

3. Prüfe, ob die gerade geschriebene Datei leer ist.
- wenn nein, kopiere sie auf das Backup.

Dieses Vorgehen hat mir weitergeholfen, als ich selbst Probleme hatte mit Bots, die mir meine Textdateien regelmäßig gelöscht haben. Seit dieser Umstellung ist es jedenfalls kein einziges Mal mehr vorgekommen.

Gruß,
Jan
 
JanKrohn schrieb:
Versuch mal folgendes i die Routine einzubauen, die die Textdatei schreibt

die Routine schreibt eine Textdatei?
Dann würde ich mich mal mit Race Conditions befassen, denn Race Conditions bei Öffnen und Schreib-Operationen auf Dateien können die tollsten Probleme verursachen :lol:
 
Na gut :)
Ich glaube aber nicht das es am dem hier liegt, denn wenn dann muss es daran liegen
weil das der Part fürs Schreiben ist.

PHP:
  $put = "kommt irgendwoher egal woher";
  $mylock_fp = fopen($folder.'/.loktemp, "r");
 
if(!flock($mylock_fp, LOCK_EX)) {
 die();
}
else {
 
 if(is_numeric($put)) {
 $put = trim($put);
 $last = fopen($folder.'/temp.txt', "a+");
  fwrite($last, $put);
  fclose($last);
   flock($mylock_fp, LOCK_UN);
}
else {
 die();
 }
}
 
Zuletzt bearbeitet:
Mal absehen vom Syntaxfehler kannst du dir einfach einen Logger basteln und nachvollziehen, an welcher Stelle das Problem entsteht.
 
Wau, da hast du ja ein absolutes Genie gebeten über deinen Code zuschauen, denn dein Code ist falsch.
Du musst erst die Datei schließen und dann den Lock freigeben, aktuell hast du eine Race Condition, die mit hoher Wahrscheinlichkeit auch für deinen Fehler verantwortlich ist.
 
Ach @train, ich testet sowas, wie sollte denn das mit Syntaxfehler überhaupt laufen? manman, die sind hier beim reinschreiben passiert da ich einige Sachen die damit nichts direkt zutun haben entfernt habe.
Das Script läuft und macht das was und wie es soll, es liegt nicht daran, müsste es aber laut eurer Ausgagen, na dann bitte schön.

@ice.. der code ist falsch paste&copy
 
Zuletzt bearbeitet:
das Skript wird auf dem Server ausgeführt da PHP. Wenn es irgendein Browser schafft das temp.txt komplett zu leeren oder Datensätze zu löschen, dann liegt zu 100% ein Programmierfehler vor. Das jeder Besucher (also auch die Bots) auf das File Schreibrechte hat ist wohl auch klar - sonst könnte man das Log ja nicht schreiben. Von dem abgesehen dass eine txt Datei nur begrenzt zu sowas taugt da es, wie schon richtig erkannt wurde, bei mehreren Zugriffen zu Problemen kommt - eine txt Datei ist schliesslich keine Datenbank.

Nur eine IP Adresse zu sperren ist sinnfrei - ebenfalls korrekt. Wenn es nicht der Java Bot ist kommt dann sonst alt irgendein anderer Bot und macht Probleme. Wenn Du das Problem lösen willst programmier oder beschaff Dir ein funktionierendes Logskript. Wenn Du Dich nicht mit PHP auskennst kannst Du nicht einfach behaupten dass das Skript über alle Zweifel erhaben ist. Fakt ist dass es anscheinend nicht so funktioniert wie gewünscht. Ein gutes Log Skript kann mit allem was reinkommt umgehen.

Robots.txt sind zwar hübsch und so aber dran halten muss sich keiner - das ist mehr so nice-to-have. Obwohl die meisten Bots und Crawlers dieses Datei berücksichtigen gibt es dafür kein "Gesetz".
 
Zuletzt bearbeitet:
Ich lass das Ding hier zu machen, ich kann mir das Gesülze einiger nicht mehr reinziehen. Quatschköpfe. :D
 
Ist der von dir gepostete Ausschnitt aus dem Log von Seite 1 alles, was der Crawler macht?
Und falls ja, warum glaubst du immer noch so verbissen, dass dein Skript korrekt sein muss, wenn der Zugriff doch einzig und allein über das Skript stattfindet (und jetzt kommt nicht mit dem yahoo-crawler, der nichts kaputt macht) ?

Der Crawler kennt deine Textdatei nicht und interessiert sich überhaupt nicht für diese, ist dir das bewusst?


edit: achja, ist diese Euroflash-Seite eigentlich der Link, welcher aufgerufen wird, wenn man auf deiner Radioseite auf euroflash klickt? Der forwarded nämlich an eine andere Adresse weiter (euro-flash.net/), darauf hat nicht jeder Crawler (oder besser gesagt Client) bock, da hast du evt. schon einen undefiniterten Zustand.
 
Zuletzt bearbeitet:
Fakt ist, der Crawler kann von sich aus keine Datei auf deinem Server löschen, außer
  • der Server ist wahnwitzig konfiguriert
  • das aufgerufene Script führt eine ungewollte Aktion durch

Alles andere ist nicht... nein... nicht möglich...
 
QXARE schrieb:
  • das aufgerufene Script führt eine ungewollte Aktion durch

der Punkt ist, wie ich schon gepostet habe, gegegeben. Da das Locking falsch implementiert wurde und Race Conditions entstehen ist das Ergebnis der Operation undefiniert.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben