通过使用fgets
来获取服务器对我正在进行的一些批处理数据库调用的响应,我遇到了一些实际问题。
我正在通过一批说,10,000个电话发送,并且我已经跟踪了延迟到fgets导致我的应用程序的速度保持不变,因为需要抓住每个呼叫的响应。
我发现这个帖子http://bugs.php.net/bug.php?id=32806很好地解释了这个问题,但是他正在读取一个文件,而不是服务器响应,所以fread
可能有点棘手,因为我可以获得下一行的一部分,以及我不想要的额外东西。
所以我的问题是,作为fgets的替代方案,从服务器读取响应的最佳/最快方式是什么?
答案 0 :(得分:1)
file_get_contents(如果您有流,则为stream_get_contents)应该是读取服务器响应的最快方法。嗯,它是检索数据的最快方法,但在查看内存使用时通常是最浪费的方式,因为它会立即将所有文件读入内存,而fgets不需要在内存中保留多行。 / p>
你也使用fread,它比fgets更快,并且可以用你可以定义的特定大小的块来读取文件。
如果您依赖于逐行读取数据,则可以使用比file_get_contents慢的file(),但它会为您提供包含文件行的数组。
为了给你一个更好的答案 - 如上所述,我们需要更多信息。
答案 1 :(得分:0)
这里的信息不够。
据推测,你的意思是说你正在某个地方运行一些PHP来调用fgets从其他东西中读取数据 - 但是其他什么东西呢?你暗示它不是一个文件 - 所以它是什么?一个本地计划?管道?网络套接字?一个网页? ......别的什么?
您可以使用其他工具更快地阅读吗?你有什么尝试?你在运行什么操作系统?你有shell访问权限来运行netcat或类似的吗?
你也在谈论滞后,而你提到的“bug”主要是解决带宽问题。
在不了解问题的情况下,无法提出解决方案。
下进行。