我遇到了IRC Bot腳本的問題,我已將它實現到了我的Curl轉移方法中。PHP - IRC Bot腳本掛起
我有一個問題,一旦IRC機器人向IRC頻道發送消息,腳本末尾的所有「回顯」都不會顯示,並且頁面掛起。整個Apache掛起。
<?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>';
這部分不腳本中顯示:
if ($bootcontents == 'success') {
echo '<center><marquee behavior="alternate" direction="left">Spinning xxx at ' . $power . '% power.</marquee></center>';
頁面只是掛起,如果我添加了exit();
功能上接近頂部整個「回聲」信息不顯示。
請有人幫忙。
我看到你有一個循環:while(1)。如果你沒有終止條件來打破這個循環,它將是一個無限循環。 – ryanlahue 2010-11-19 22:39:25
通過網絡服務器啓動這樣的東西是不好的。此外,理智的服務器不會讓你的機器人發送任何消息,因爲它不響應可能在收到USER和NICK後立即發送的PING。 – ThiefMaster 2010-11-19 22:43:52
您必須從命令行運行您的bot,而不是通過網頁。 – Jocelyn 2012-06-05 21:37:47