-1
我需要一個簡單的php IRC bot,它通過POST請求獲取消息並將該消息發送到irc通道。爲此,我改編了來自PHP - IRC Bot Not sending message Help的機器人。然後,我使用消息隊列將POST消息從IRC related help發送到機器人。php IPC腳本簡單地退出
但是,當我通過start.html運行php腳本時,bot甚至不加入該通道。 irc.php - >
<?php
$ircServer = "irc.freenode.net";
$ircPort = "6667";
$ircChannel = "##my-channel";
set_time_limit(0);
$ircSocket = fsockopen($ircServer, $ircPort, $eN, $eS);
$msg = $_POST['msg'];
if ($ircSocket)
{
fwrite($ircSocket, "USER EDI Normandy-SR2 Alliance Dr-Eva\n");
fwrite($ircSocket, "NICK Hit-Hi-Fit-Hai\n");
fwrite($ircSocket, "JOIN " . $ircChannel . "\n");
fwrite($ircSocket, "PRIVMSG $ircChannel :$msg\n");
$queueKey = 123321;
$queue = false;
// Join the IPC queue
$queue = msg_get_queue($queueKey);
if(!$queue) echo "ERROR: Could not join IPC queue. Form data will not be received";
while(1)
{
while($data = fgets($ircSocket, 128))
{
echo nl2br($data);
flush();
$ex = explode(' ', $data);
if($ex[0] == "PING") fputs($socket, "PONG ".$ex[1]."\n");
if (msg_receive($queue, 0, $msgType, 1024, $msgData, true, MSG_IPC_NOWAIT)) {
//fwrite($ircSocket, "PRIVMSG $ircChannel :$msgData\n");
echo "callback working";
}
}
}
}
?>
赫斯是我如何調用這個腳本。 的start.html - >
<html><body>
<h4>Start Bot</h4>
<form action="irc.php" method="post">
Command: <input type="text" name="msg" />
<input type="submit" />
</form>
</body></html>
如果刪除了消息隊列的代碼,機器人也不加入的頻道。
有什麼問題嗎? – Florent 2012-07-13 14:15:52
是否啓用sysvmsg?這不是標準的擴展。 http://php.net/manual/en/sem.installation.php – rrehbein 2012-07-13 15:39:43
當你刪除消息隊列時,代碼是什麼樣的? – 2012-07-13 17:39:49