Anderl72 0 Report post Posted February 10, 2005 (edited) Hallo Ibpsupport, Lange habe ich mich nicht blicken lassen, ich wünsche allen noch ein gutes 2005 Nun betreibe ich eine Webseite für behinderte Menschen, die als Motor das Invisionboard 1.2 verwendet. Die Webseite besteht seit ungefähr einem Jahr und wird immer populärer Der Googlebot kommt täglich und indiziert mehrer Seiten. Dabei tritt folgender Fehler auf: mySQL query error: INSERT INTO ibf_sessions (id,member_name,member_id,member_group,in_forum,in_topic,login_type,running_time location,ip_address,browser) VALUES('google_session','GoogleBot','0','2','0','0','','1107994105','Bildergalerie,,03','66.249.65.41','Mozilla/5.0 (compatible; Googlebot/2.1; +http://ww') mySQL error: Duplicate entry 'google_session' for key 1 mySQL error code: Date: Thursday 10th of February 2005 01:08:27 AM Wenn man mal GOGGLED, scheint es so als sei ich nicht der einzige Mit diesem Problem und könnte ein Bug sein, dass speziell durch den Googlebot hervorgerufen wird. Auch ist IPBSUPPORT von diesem Bug?! betroffen Meines Erachtens lässt das Board nur EINE google Session zu ????? und deshalb tritt der Fehler auf? Das Problem scheint mir hier in der functions.php zu liegen: function create_bot_session($bot) { global $DB, $INFO, $std, $ibforums; $db_str = $DB->compile_db_insert_string( array( 'id' => $bot.'_session', 'member_name' => $ibforums->vars['sp_'.$bot], 'member_id' => 0, 'member_group' => $ibforums->vars['spider_group'], 'in_forum' => intval($ibforums->input['f']), 'in_topic' => intval($ibforums->input['t']), 'login_type' => $ibforums->vars['spider_anon'], 'running_time' => $this->time_now, 'location' => $ibforums->input['act'].",".$ibforums->input['p'].",".$ibforums->input['CODE'], 'ip_address' => $this->ip_address, 'browser' => $this->user_agent, ) ); $DB->query("INSERT INTO ibf_sessions ({$db_str['FIELD_NAMES']}) VALUES({$db_str['FIELD_VALUES']})"); } Wenn es eine google_session gibt, erlaubt das Board keine neue. Nun muss ich das Board dazu bringen entweder die Alte zu updaten oder eine Neue zu generieren? Wer hat Vorschläge zur Lösung des Problems? Das Problem tritt übrigens auch in der version 1.3 auf Schönen Tag wünscht Anderl72 Edited February 10, 2005 by Anderl72 Share this post Link to post
Anderl72 0 Report post Posted February 10, 2005 (edited) das was hier mal stand funktioniert nicht, deshalb hab ischs gelöscht :( Edited February 10, 2005 by Anderl72 Share this post Link to post
Stefan 0 Report post Posted February 10, 2005 Okay, ein kleiner Workaround, der funktionieren sollte. Ist vielleicht nicht die schönste Art und Weise, ggf. schau ich später nochmal, aber da ich gerade von einer Klausur komme und nicht mehr ganz so fit im Kopf bin, muß das genügen. Unterhalb von function create_bot_session($bot) { global $DB, $INFO, $std, $ibforums; folgendes einfügen $DB->query("DELETE FROM ibf_sessions WHERE id = '".$bot."_session'"); Erhöht die Anzahl der Queries bei einer neuen Bot Session um eins, aber es dürften keine Duplikate mehr vorkommen. Share this post Link to post
Anderl72 0 Report post Posted February 11, 2005 Stefan, das du anderen hilfst wärend du klausuren schreibst, davor ziehe ich meinen hut. ich weiss aus eigener erfahrung wie angespannt man da ist Ich wünsche auf jedenfall viel glück. Mit deinem workaround schmeisse ich jeden bot doch runter von der seite, oder nicht? Bots muss man willkommen heissen Ich habe als workaround rand(1,1000) an das dupplikate Feld angehängt Gestern hatte ich kurzfristig über 150 GoogleBot Sessions :D (Achtung Trafficlastig !!!) Die sind kurz mal über die Seite hergefallen :D Mal guggen wie das gespiderte Ergebnis wird. Anderl Share this post Link to post
Stefan 0 Report post Posted February 11, 2005 Also ich kam von einer Klausur, also war es nicht ganz so schlimm. Bei meiner Lösung werden nicht alle Bot Session gelöscht, sondern nur die von dem jeweiligen betroffenden Bot. Soll bedeutet, wenn das Forum nicht realisiert, das es schon einen Eintrag in der ibf_sessions für den jeweiligen Bot hat und versucht einen neuen einzutragen, werden vorher ggf. vorhandene Einträge des Bots gelöscht. Mehr nicht. Die ID innerhalb der Tabelle soll ja eindeutig sein. Bei einem Google Bot wird dort als Id google_session eingetragen. Will das Forum nun erneut einen Google Bot eintragen, dann würde er wieder die gleiche ID nehmen, die ja schon vergeben ist und somit kommt besagte Fehlermeldung. Mein Statement löscht ggf. den schon vorhandenen Eintrag mit der Id google_session und schon kann das Forum seinen neuen Eintrag hinzufügen. Normalerweise sollte das Forum jedoch erkennen, das es schon eine Session mit dem Bot hat, was ich mir aber vorstellen kann, ist das das Problem vorkommt, wenn noch ein unbekannter Bot zur gleichen Zeit auftaucht, denn den deklariert das Forum auch als Google Bot. Kann es aber im Moment nicht mit Sicherheit sagen, da meine Behauptungen über die Ursache rein aus dem Gedächtnis stammenden Quelltext beruhen, denn ich hab gerade keinen Einsicht in die Forensoftware. Ggf. schau ich später mal nach. Bots selber schmeißt du aber mit meinem Workaround nicht vom Forum, denn sie bekommen einfach eine neue Session wenn sie weiter gehen, falls das Forum nicht realisiert, das es sich um den gleichen Bot handelt. :) Share this post Link to post
Stefan 0 Report post Posted February 11, 2005 So, ich hab nun mal in den Sourcen des Forums geschaut. Normalerweise wird genau das, was ich in meinem Workaround beschrieben habe, schon vor dem Aufruf der Methode create_bot_session durchgeführt. Schau mal in deiner functions.php, ob du folgende Zeilen hast: if ( $ibforums->vars['spider_active'] ) { $DB->query("DELETE FROM ibf_sessions WHERE id='".$agent."_session'"); $this->create_bot_session($agent); } Wo ich das gerade sehe, frag ich mich, warum Matt das in eine seperaten If Anweisung gepackt hat und vorallem nicht direkt in seine Create Methode, so wie bei meinem Workaround. ;) Share this post Link to post