PHP socket_read() 只返回 1 个字符串

尼克

我使用下面的脚本连接到外部 PBX 服务器并获取通话记录。

然而,它一次只返回 1 刺,等于 1 对数。所以我需要多次刷新才能获得所有可用的日志。

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die();
$result = socket_connect($socket, $address, $port) or die();

$out = socket_read($socket, 2048);

如何获得所有可用的字符串而不必一直重新启动连接?

亚历山大·米哈利辛

可能你的意思是循环从套接字读取?根据文档(http://php.net/socket_read),您可以执行类似的操作,while ($portion = socket_read($socket, 2048)) { do_something_with_that_portion_of_log; }如果数据耗尽,您将获得空字符串或 FALSE(如果发生错误)。

最终解决方案

我们使用socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=> 10, 'usec'=> 0));默认的非阻塞模式。读取所有日志后,程序将等待约 10 秒并完成。

https://gist.github.com/mihalicyn/533273e0d8b23de33aaf7f2cf0973d88

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

php 只回显变量字符串中的前 20 个字符

返回的字符串比每个字符在字符串中出现的次数多重复1个字符

使用PHP从另一个字符串返回预选单词的字符串

PHP在一个字符串内的一个字符串之后返回一个字符串

如果有多个 IF 语句,如何返回 1 个字符串

PHP socket_read / recv阻止python的socket.send

php-ffi: 返回类型 const char* 是一个字符串

运行从 php 调用的 bash 并返回一个字符串

当用 3 个字符字节编码 UTF-8 字符串时,长度为什么只增加 1

PHP返回的字符串带有小写的每个单词的第一个字符

PHP regex,preg_replace_callback,在1个字符串中出现2个可能的匹配失败

如何计算一个字符串中的单个值并将其在php中加1

为什么HttpRequestHeaders.GetValues(string)返回的IEnumerable只能有1个字符串?

如何返回并打印出第一个字符串(string1)的起始地址?

Pandas Dataframe在使用.loc的列中未返回1个字符串值的结果

我们可以在 PHP 函数中返回一个字符串吗?

为什么随机变量只返回 1 个字符

PHP foreach 数组只返回第一个字符

两个相同的字符串返回false,而从PHP响应接收到一个字符串

“对于给定的字符串,在每个字母'r'之后返回下一个字符”。红宝石kickstart教程挑战(1:7)

尝试将多个字符串解析为 1 个字符串

导入 ng-redux 只返回一个字符串

c++ fstream::read 只返回第一个字符

我的函数有问题,它必须能够接受一个字符 ch(即长度为 1 的字符串),如果 ch 是元音则返回 true

1个字符串的正则快递问题

比较 PHP 中的 2 个字符串

PHP多个字符串替换

比较两个字符串 PHP

返回某个字符串前的 xx 个字符