PHP套接字客户端不接收连续数据

时间:2018-11-22 21:56:55

标签: php

我的目标是捕获Java服务器套接字实时生成的消息,并将这些消息显示在网页上。 我正在尝试使用php连接到套接字并从服务器接收数据。 php客户端应不断侦听服务器中的消息。

这是我的php代码

<?php
set_time_limit(0);

$serverAddress=SERVER_ADDRESS;
$serverListeningPort=SERVER_PORT;
//make a connection and get a socket object
if ( ($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === FALSE )
{
    echo "socket_create() failed: reason: " .socket_strerror(socket_last_error());
}
else
{
    echo("socket create was successful");
    echo("<br>");
}
echo ("Attempting to connect to host");
echo("<br>");
if ( ($result = socket_connect($socket, $serverAddress, $serverListeningPort)) === FALSE )
{

    echo ("socket_connect() failed. Reason:".socket_strerror(socket_last_error($socket)));
}
echo ("Reading response:");
$message="";
while(true)//listen for ever
{
  $message=socket_read($socket, 300);
  if($message!=='')
  {
   print_r($message);
  }
}                       
?>

当我加载此php页面时,大多数时候我会收到504网关超时错误。我已验证Java服务器正在拾取客户端连接。 有时,我只会收到一些消息,然后页面停止从服务器获取消息。不知道为什么,因为我有一个while(true)循环。

我正确使用了php套接字吗?我该如何实现自己的目标。

谢谢

1 个答案:

答案 0 :(得分:0)

尝试在代码开头添加以下行。这样会将结果输出到浏览器。

ob_end_flush();
ob_implicit_flush(1);