Not logged in. · Lost password · Register
Forum: PHP4You :: Scripts Support und Fragen RSS
PHPIrc_bot
Page:  1  2  next 
spielefreak #1
Member since Sep 2008 · 4 posts
Group memberships: Mitglieder
Show profile · Link to this post
Subject: PHPIrc_bot
Hallo,

hab ein kleines Problem mit dem Bot.
Und zwar joined dieser zwar, wird dann aber gekillt wegen:

The session limit for your host *** has been exceeded. :OperServ!services@euirc.net KILL Mizu :central.euirc.net!services.euirc.net!OperServ (Session limit exceeded) ERROR :Closing Link: Mizu*** central.euirc.net (Killed (OperServ (Session limit exceeded)))


Was muss ich denn da jetzt genau an der config von php verändern?

Danke schonmal im Vorraus


MfG
spielefreak
spielefreak #2
Member since Sep 2008 · 4 posts
Group memberships: Mitglieder
Show profile · Link to this post
Das Supportforum ist wohl auch nur zur Zierde gedacht -.-
Avatar
Janek (Administrator) #3
User title: Admin
Member since Aug 2006 · 125 posts · Location: Potsdam
Group memberships: Administratoren, Cehmes-Entwickler, Mitglieder
Show profile · Link to this post
Hallo,

sorry für die Verspätung. Ich schau mal ob ich in dem Forensystem Mail Benachrichtigung für alle Beiträge einstellen kann. Ich hätte ja schon länger antworten können nur schau ich hier wegen der wenigen Beiträge nicht so oft rein... Bei solchen Wartezeiten kommen wohl auch keine neuen Beiträge - das versteh ich.

Also zum Problem: Was ist das für ein Hoster? In der Regel erlauben Webhoster nur eine begrenzte Laufzeit von PHP Skripten. Du kannst Versuchen in die Datei welche du zum starten des Bots nutzt (Also z.B. die Vorgabe php4you.php) ganz oben die Zeile

set_time_limit(0);

einfügen. Damit wird die Limitierung der maximalen Ausführzeit des Skriptes deaktiviert. Wie gesagt ist dies von vielen Hostern nicht erwünscht oder gesperrt. Wir empfehlen daher das Skript direkt auf einem Server mittels Screen oder als normalen Background Prozess (& anhängen) auszuführen. Dies kann z.B. von einer SSH Konsole aus geschehen. Du kannst ja deinen Hoster fragen ob du SSH Zugriff bekommen könntest.

Grüße,
foxx
>> PHP4You
>> Against ICQ
spielefreak #4
Member since Sep 2008 · 4 posts
Group memberships: Mitglieder
Show profile · Link to this post
Danke erst mal für die Antwort.

Das ist mein eigener Server und ich habe auch Zugriff per SSH.
Ausgeführt habe ich den Bot erst auch per SSH nur kam dort keine Fehlermeldung und ich hab ihn dann im Browser gestartet, wo ich dann ie Fehlermeldung bekommen hab.

Muss ich das was in der PHP.ini ändern oder einfach das set_time_limit(0); in der Datei anhängen?
Avatar
Janek (Administrator) #5
User title: Admin
Member since Aug 2006 · 125 posts · Location: Potsdam
Group memberships: Administratoren, Cehmes-Entwickler, Mitglieder
Show profile · Link to this post
Also in der php.ini kannst du ein globales Zeitlimit für alle PHP Skripte angeben. Wenn du das set_time_limit(0); in der Datei einfügst (Über dem gesamten Code!) dann funktioniert das bei einer normalen PHP Installation auch ohne Änderungen in der php.ini. Shared Hoster haben die Funktion aber meist deaktiviert. Deaktivierte Funktionen findest du in der php.ini unter der Variable "disabled_functions". Ich empfehle dir aber wenn du SSH Zugriff hast den Bot auch über SSH auszuführen. Auch wenn das Limit deaktiviert wurde bleibt ein so gestarteter Bot meist nicht zuverlässig lange im IRC. Manchmal nach Stunden und manchmal nach Tagen oder Wochen verschwindet er einfach wieder.

Am besten ist wenn du die "screen" Installiert. Damit kannst du den Bot im Terminal im Hintergrund laufen lassen und ganz einfach die Ausgaben des Bots jederzeit betrachten. Desweiteren benötigst du die CGI Version von PHP. Also auf Debian basierten Distributionen wär das

apt-get install screen php5-cgi

Anschließend startest du eine neue Screen Session indem du einfach "screen" eingibst. In dem neuen Terminal startest du den Bot mit "php php4you.php". php4you.php gegebenenfalls durch deine Startdatei ersetzen.

Ich habe ein wenig gegoogled und folgendes gefunden:

http://forum.chatterportal.com/session-limit-exceeded-t291…:
ahhh hab es rausgefunden was ich suchte ....
ein einfaches /os help EXCEPTION brachte die lösung.
aber da muss man ja erst mal drauf kommen

Aber ich habe den Bot grade noch einmal getestet und ich habe keine Probleme. Ich denke also nicht, dass das Problem Bot spezifisch ist...

Naja vielleicht klappts ja jetzt bei dir.

Gruß,
foxx
>> PHP4You
>> Against ICQ
spielefreak #6
Member since Sep 2008 · 4 posts
Group memberships: Mitglieder
Show profile · Link to this post
Hmm. Gar nicht bemerkt das du mir geantwortet hast, da letztes Mal ne Mail kam und diesmal kam nix, das auf meinen Post geantwortet wurde.^^
Werd mir mal anschaun und hoffe das es dann funkt.
Avatar
Janek (Administrator) #7
User title: Admin
Member since Aug 2006 · 125 posts · Location: Potsdam
Group memberships: Administratoren, Cehmes-Entwickler, Mitglieder
Show profile · Link to this post
Hm also die Benachrichtigungsmail funktionieren aber - zumindest hab ich grade einmal eine Mail und eine Jabber Nachricht bekommen da du geantwortet hast. Wie auch immer - hast die Antwort ja noch gelesen.
Hoffe es funktioniert dann jetzt - über 2 Monate nach der Fragestellung ;)
>> PHP4You
>> Against ICQ
spacer #8
Member since Nov 2009 · 13 posts
Group memberships: Mitglieder
Show profile · Link to this post
Hallo,
ich habe auch ein Problemmit dem PHPIrc_bot:
Die Funktion php4youBot_hello wird nicht ausgeführt, wenn ein neuern User in den Channal kommt.
Kann mir da jemand helfen?
spacer #9
Member since Nov 2009 · 13 posts
Group memberships: Mitglieder
Show profile · Link to this post
Also, ich habe mal einen Testdruck in die Funktion eingefügt:
   echo "heeeeeeeeeeeeloooooooooooooo";  
und dadurch festgestellt, dass die Funktion doch ausgeführt wird.
Selsamerweise werden jedoch die beiden anderen Programmzeilen in der Funktion
$object->privmsg($channel, ":Willkommen im Channel, $nick! Tippe \"" . $c . "info\" wenn du mehr wissen willst."); 
und
 mysql_query("insert into users (user) values ($nick)");      (letztere stammt von mir)
nicht ausgeführt.
This post was edited 3 times, last on 2009-11-21, 16:05 by Janek.
Avatar
Janek (Administrator) #10
User title: Admin
Member since Aug 2006 · 125 posts · Location: Potsdam
Group memberships: Administratoren, Cehmes-Entwickler, Mitglieder
Show profile · Link to this post
Hallo spacer,

poste doch einfach mal den gesamten Code. In welche Funktion hast du das denn eingefügt? Die ist nötig um dir weiterhelfen zu können.

EDIT:

Entschuldige bitte, du hast ja 2 Beiträge hintereinander geschrieben... Ich schaus mir nochmal an. Wär trotzdem gut wenn du den gesamten Code posten könntest.

Grüße
>> PHP4You
>> Against ICQ
spacer #11
Member since Nov 2009 · 13 posts
Group memberships: Mitglieder
Show profile · Link to this post
Hi,
danke für die schnelle Antwort!
hier der komplette Code von hello.php:
<?php
$bot->add_hook("JOIN", "php4youBot_hello");

function php4youBot_hello($object, $command, $params, $prefix) {
    global $owner;
    global $c;
    $nick = IRC::get_nick($prefix);
        $object->privmsg($channel, ":Willkommen im Channel, $nick! Tippe \"" . $c . "info\" wenn du mehr wissen willst.");
          echo "$nick hat den channal betreten";

    mysql_query("insert into users (user) values ($nick)");

}
?>

und hier nochmal meine startdatei (raumconbot.php):

<?php
/*
PHPIrc_bot - an IRC bot writen in PHP
Copyright (C) 2006 Thorben Gartmann

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/


include("BOT.php");

$bot = new IRC_Bot;

// Config for the bot
$bot->server = "irc.mibbit.com";
$bot->port = "6667";
$bot->nickname = "raumcon_bot";
$nick = $bot->nickname;
$channel = "#raumcon";
$c = "$";

// Some config for hooks
$owner = "spacer";
$quitmsg = "Cya leute!! >>www.raumfahrer.net<<";
$log_format = "d.m H:i";
$info["owner"] = $owner;
$info["website"] = "www.raumfahrer.net";
$info["channel"] = "#raumcon @ irc.euirc.net";
$info["version"] = "PHPIrc_bot 0.2";
$info["commands"] = $c . "coffee, " . $c . "info, " . $c . "echo, " . $c . "html" . $c . "minibar" ;
$info["admin_commands"] = "$c" . "quit, ". $c . "rejoin, " . $c . "nick, " . $c . "php, " . $c . "mode [nick]";
$info["notice"] = "Kein Kommerz und keine Beleidigungen im channel! Auch kein sonstiger unfug!";

$mode["spacer"] = "O";
$mode["ian"] = "O";
$mode["klausd"] = "O";
$mode["pikarl"] = "O";
$mode["nemo"] = "0";
$mode["nemos_bot"] = "O";
$mode["KSC"] = "O";

$games = TRUE;  //games are enabled for default



 mysql_connect("localhost","raumfahrt@1","ValkG3eC");
    mysql_select_db("raumfahrt@1-raumconbot");
$dir = "bot_functions/";
$dirh = opendir($dir);
    while ($file = readdir($dirh)) {
        if (substr($file, -4) == ".php") {
            include_once($dir . $file);
        }
    }
closedir($dirh);


$bot->run();

?>
Avatar
Janek (Administrator) #12
User title: Admin
Member since Aug 2006 · 125 posts · Location: Potsdam
Group memberships: Administratoren, Cehmes-Entwickler, Mitglieder
Show profile · Link to this post
Probier doch mal ein
var_dump(mysql_error());
nach deinem MySQL Query. So kannst du erstmal schauen ob dieser überhaupt erfolgreich ausgeführt wird.
>> PHP4You
>> Against ICQ
spacer #13
Member since Nov 2009 · 13 posts
Group memberships: Mitglieder
Show profile · Link to this post
Danke für den Tipp:
string(26) "MySQL server has gone away"
der MySQL Server soll nicht mehr verfügbar sein? Seltsam, denn mit PHP My Admin habe ich keine Probleme.
Außerdem wird die Programmzeile
object->privmsg($channel, ":Willkommen im Channel, $nick! Tippe \"" . $c . "info\" wenn du mehr wissen willst.");
ja auch nicht ausgeführt.
spacer #14
Member since Nov 2009 · 13 posts
Group memberships: Mitglieder
Show profile · Link to this post
Mir fällt da gerade etwas auf...
$object->privmsg($channel, ":Willkommen im Channel, $nick! Tippe \"" . $c . "info\" wenn du mehr wissen willst.");
Der Aufruf benutzt die Variable $Channal, die der Funktion php4youBot_hello aber nicht übergeben wird.
Hm, werde mal versuchen, dass zu reparieren.
spacer #15
Member since Nov 2009 · 13 posts
Group memberships: Mitglieder
Show profile · Link to this post
So, habe folgende Zeile in der php4youBot_hello ergänzt:
global $channel;
jetzt funktioniert es.
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please note the verification code from the picture into the text field next to it.
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Page:  1  2  next 
Go to forum
This board is powered by the Unclassified NewsBoard software, 20090606-dev, © 2003-8 by Yves Goergen
Current time: 2012-02-05, 19:21:18 (UTC +01:00)