使用PHP写入套接字

时间:2014-01-15 18:56:07

标签: php sockets

我将此代码放在文件bot.php中,该文件打开并保持实时IRC连接:

<?php

// Prevent PHP from stopping the script after 30 seconds
set_time_limit(0);

// Open socket
$irc = fsockopen("localhost", 6667);

// Send AUTH
fputs($irc,"USER PHPServ PHPServ PHPServ :PHPServ\n");
fputs($irc,"NICK PHPServ\n");

// Wait, OPER and JOIN channel
sleep(5);
fputs($irc,"OPER PHPServ :password\n");
fputs($irc,"JOIN #channel\n");

// Force an endless while
while(1) {

    // Continue
    while($data = fgets($irc, 128)) {

        echo nl2br($data);
        flush();

        $ex = explode(' ', $data);

        if($ex[0] == "PING"){
            fputs($irc, "PONG ".$ex[1]."\n");
        }

    }

}

?>

如何fputs($irc,"PRIVMSG #channel :Message\n");通过bot.php发送此邮件,但是可以通过其他文件发送rgeister.php。 {{1}}?

有人能指出我在正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您需要一种在bot.phpregister.php之间进行通信的方式。

由于两者都在同一台机器上运行,因此比套接字更容易。获取.txt个文件,然后在register.phpfile_put_contents)中写一条消息。

然后在bot.phpfile_get_contents可能)中的while循环中读取它。如果它是空的那么什么都不做。如果内部有消息,则使用fputs发送消息,然后清空文件,这样您就不会读取它并在下一个循环中再次发送它。

显然这会受到并发问题的影响。如果性能不是问题,请阅读file locking,我想这不是。