Ich habe ein Problem mit meinem IRC Bot-Skript, ich habe es in meine Curl-Transfer-Methode implementiert.PHP - IRC Bot Skript Hängen
Ich habe ein Problem, sobald der IRC-Bot sendet eine Nachricht an den IRC-Kanal, alle "Echo" am Ende des Skripts nicht angezeigt und die Seite hängt. Der ganze Apache hängt.
<?php
$ircServer = "///";
$ircPort = "6667";
$ircChannel = "#bots";
set_time_limit(0);
$msg = $_POST['msg'];
$paper = $_POST['paper'];
$sizzor = $_POST['sizzor'];
$hand = $_POST['hand'];
$ircSocket = fsockopen($ircServer, $ircPort, $eN, $eS);
if ($ircSocket)
{
fwrite($ircSocket, "USER Lost rawr.test lol :code\n");
fwrite($ircSocket, "NICK Rawr" . rand() . "\n");
fwrite($ircSocket, "JOIN " . $ircChannel . "\n");
ignore_user_abort(TRUE); // Noob Close down page
fwrite($ircSocket, "PRIVMSG " . $ircChannel . " :" . $msg . "\n");
while(1)
{
while($data = fgets($ircSocket, 128))
{
echo nl2br($data);
flush();
// Separate all data
$exData = explode(' ', $data);
// Send PONG back to the server
if($exData[0] == "PING")
{
fwrite($ircSocket, "PONG ".$exData[1]."\n");
}
}
echo $eS . ": " . $eN;
}
}
?>
if ($bootcontents == 'success') {
echo '<center><marquee behavior="alternate" direction="left">Spinning xxx at ' . $power . '% power.</marquee></center>';
Dieser Teil zeigt nicht im Skript:
if ($bootcontents == 'success') {
echo '<center><marquee behavior="alternate" direction="left">Spinning xxx at ' . $power . '% power.</marquee></center>';
Die Seite hängt nur, wenn ich die exit();
Funktion auf in der Nähe der Spitze der ganze „Echo“ Info zeigen nicht hinzufügen.
Bitte kann jemand helfen.
Ich sehe, Sie haben eine Schleife: while (1). Wenn Sie keine Abbruchbedingung haben, um aus dieser Schleife auszubrechen, handelt es sich um eine Endlosschleife. – ryanlahue
Start solcher Sachen über einen Webserver ist schlecht. Zusaetzlich lassen gesunde Server Ihren Bot keine Nachrichten senden, da er nicht auf ein PING reagiert, das wahrscheinlich direkt nach dem Empfang von USER und NICK gesendet wird. – ThiefMaster
Sie müssen Ihren Bot über die Befehlszeile und nicht über eine Webseite ausführen. – Jocelyn