如何只使用一个套接字在PHP中发送许多请求HTTP?

时间:2015-12-31 00:20:35

标签: php sockets

我有一个PHP类来推送带有套接字的消息:

function __construct()
{
     $this->socket = fsockopen($this->host, $this->port, $errno, $errstr, 0); //I tried with 99999 for timeout too
}

function push($params)
{
     $req = 'GET /push?'.$params." HTTP/1.1\r\n"
            . 'Host: '.$this->host."\r\n"
            . "Content-Type: application/x-www-form-urlencoded\r\n"
            . 'Content-Length: '.strlen($params)."\r\n"
            . "Connection: keep-alive\r\n\r\n";

     fwrite($this->socket, $req);
}

但是,如果我尝试推送2条或更多信息,则NodeJS服务器只接收一条消息:

foreach(['foo=2', 'bar=42'] as $loop)
{
   $pusher->push($loop);
}

现在,如果我在$this->socket = fsockopen($this->host, $this->port, $errno, $errstr, 0);之前放置此行fwrite,则会发送所有消息...

那么为什么我不能只使用一个连接用于同一个soket的多个请求?

我使用“keep-alive”并且我没有调用fclose,所以我不明白为什么我的nodeJS服务器在第一种情况下只收到一条消息......

0 个答案:

没有答案