PHP - 如何测试stream_socket_client创建的流是否是开放和可写的?

我的问题非常类似于这个问题但在我的情况下我想知道 stream_socket_client返回的流是否</ code>是开放的,可写的。</ p>

我知道如果无法打开流, stream_socket_client </ code>将返回 FALSE </ code>,但我是 需要稍后检测服务器是否已关闭流(或由于某些网络错误而关闭)。</ p>

目前我正在做...... < / p>

$ fp = stream_socket_client($ apns_url,$ error_code,$ error_string,$ timeout_secs,STREAM_CLIENT_CONNECT,$ ctx);
//循环/发送数据
if(!fp ){
//重新打开连接
} </ code> </ p>

...但我不确定我的 if(!fp){.. 。} </ code>检查是否足够?</ p>
</ div>

展开原文

原文

My question is very similar to this question but in my case I am wanting to know if the stream returned by stream_socket_client is open and writeable.

I know that stream_socket_client will return FALSE if the stream could not be opened, but I am needing to detect later on if the stream has been closed by the server (or closed due to some network error, for example).

At the moment I'm just doing...

$fp = stream_socket_client($apns_url, $error_code, $error_string, $timeout_secs, STREAM_CLIENT_CONNECT, $ctx); //looping through / sending data if (!fp) { //re-open connection }

...but I'm not sure if my if (!fp) {...} check is sufficient?

php

2个回答



使用 stream_get_meta_data </ code>检查流是否可写。 </ p>

  $ meta = stream_get_meta_data($ fp); 

if if(is_writable($ meta ['uri'])){
// stream是可写的
}
</ code> </ pre>

使用 feof </ code>检查流是否已打开。</ p>


  • 如果文件指针处于EOF或发生错误,则返回TRUE
    (包括套接字超时); </ code> </ li>
    </ ul>
    </ div>

展开原文

原文

Use stream_get_meta_data for checking if stream is writable.

 $meta = stream_get_meta_data($fp);

 if(is_writable($meta['uri'])) { 
 // stream is writable
 }

Use feof for checking if stream is open.

  • Returns TRUE if the file pointer is at EOF or an error occurs (including socket timeout);



尝试检查文件结尾,而不是检查它是否为假</ p>

  while  (!feof($ fp)){...} 
</ code> </ pre>
</ div>

展开原文

原文

Try checking for end of file instead of checking if it is false

while (!feof($fp)) {...}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐