我正在尝试与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中不受支持?
答案 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);