IRC 봇 스크립트에 문제가 있습니다.이를 필자의 Curl 전송 방법으로 구현했습니다.PHP - IRC 봇 스크립트 Hanging
IRC 봇이 IRC 채널에 메시지를 보내면 스크립트 끝에있는 모든 "echo"가 표시되지 않고 페이지가 중단되는 문제가 있습니다. 아파치 전체가 멈춘다.
<?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>';
이 부분은 스크립트 동안 표시되지 않습니다 : 나는 전체 "에코"정보가 표시되지 않습니다 상단 위에 exit();
기능을 추가하는 경우
if ($bootcontents == 'success') {
echo '<center><marquee behavior="alternate" direction="left">Spinning xxx at ' . $power . '% power.</marquee></center>';
페이지는 그냥 정지됩니다.
누군가 도와 드릴 수 있습니다.
나는 루프가있는 것을 본다 : while (1). 이 루프를 벗어나는 종료 조건이 없으면 무한 루프가됩니다. – ryanlahue
웹 서버를 통해 이런 식으로 시작하는 것은 좋지 않습니다. 또한 정상적인 서버는 사용자 및 NICK를받은 직후에 전송 될 가능성이있는 PING에 응답하지 않기 때문에 봇이 메시지를 보내지 않습니다. – ThiefMaster
웹 페이지가 아닌 명령 줄에서 봇을 실행해야합니다. – Jocelyn