如何在php中建立与web url的持久连接?

时间:2018-04-11 15:10:11

标签: php http curl persistent

我正在尝试与weburl建立持久连接,并且每时每刻都会从url读取响应(Connection不会断开连接)。

寻找类似的东西。

connection = connect("http://www.ibm.com?id=test"); while(connection has response){ //do something with the response until the connection in forcefully closed }

我查看了pecl_http库。但这不符合目的。 我们可以使用curl与web url建立持久连接吗?

或者它是否在php中不受支持?

2 个答案:

答案 0 :(得分:0)

了解http协议的工作原理。在更改内容时,不可能拥有持久连接和接收事件。您可以使用websockets或long-polling。 检查github上找到的这个库 https://github.com/panique/php-long-polling

答案 1 :(得分:0)

使用socket api。

$sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_connect($sock,"www.ibm.com",80);
$data=implode("\r\n",array(
'GET /?id=test HTTP/1.0',
'Host: www.ibm.com',
'User-Agent: PHP/'.PHP_VERSION,
'Accept: */*'
))."\r\n\r\n";
socket_write($sock,$data);
while(false!==($read_last=socket_read($sock,1))){
   // do whatever
    echo $read_last;
}
var_dump("socket_read returned false, probably means the connection was closed.",
"socket_last_error: ",
socket_last_error($sock),
"socket_strerror: ",
socket_strerror(socket_last_error($sock))
);
socket_close($sock);