我遇到了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