在PHP中执行套接字写入后刷新套接字
我有以下代码:在PHP中执行套接字写入后刷新套接字,php,sockets,Php,Sockets,我有以下代码: foreach ($this->_queue as $header) { $result = socket_write($this->_socket, $header, strlen($header)); if (!$result) { // check error here if result was false } } socket_close($this->_socket); 这段代码工作得很好,因为它通常
foreach ($this->_queue as $header)
{
$result = socket_write($this->_socket, $header, strlen($header));
if (!$result)
{
// check error here if result was false
}
}
socket_close($this->_socket);
这段代码工作得很好,因为它通常会到达foreach的第三次迭代,之后它会完全中断(甚至不会到达socket\u close($This->\u socket)
行)
我怀疑我需要做一些事情,比如冲洗插座(强制它写入,然后清洗自己或其他东西),但我没有找到任何地方表明这是可能的
通过
$this->\u queue
为每次迭代打开和关闭套接字是否更好?您正在关闭循环中的套接字。第一次迭代之后的每次迭代都会由于套接字关闭而返回一个错误。抱歉!我编辑了我的示例,以准确地反映我现在拥有的代码。关闭循环中的套接字是我正在尝试的修复方法的一部分:)您知道不是所有数据都可以一次写入吗?看见依我看,不要以为会这样。实现这一点的方法是创建一个循环并累积发送的总长度,直到发送所有数据或返回零。@RyanVincent您建议我如何编写所述循环?我正在努力思考如何做到这一点。示例代码:。如果你愿意的话,我有完整的工作班,我可以提供——我这样做是为了回答另一个问题。