我在使用 fgets
获取服务器对我正在进行的一些批处理数据库调用的响应时产生了一些真正的延迟问题。
我正在发送一批比如说 10,000 个调用,我已经追踪到 fgets 的滞后导致我的应用程序速度受阻,因为需要获取每个调用的响应。
我找到了这个帖子 http://bugs.php.net/bug.php?id=32806这很好地解释了这个问题,但他正在读取一个文件,而不是服务器响应,所以 fread
可能有点棘手,因为我可以获得下一行的一部分,以及我不想要的额外内容.
所以我的问题是,除了 fgets 之外,从服务器读取响应的最佳/最快方法是什么?
最佳答案
file_get_contents(或者 stream_get_contents,如果你有一个流)应该是读取服务器响应的最快方式。好吧,这是检索数据最快的方法,但在查看内存使用情况时,它通常是最浪费的方法,因为它一次将所有文件读入内存,而 fgets 不需要在内存中保留超过一行。
您也可以使用 fread,它比 fgets 更快,并且它以您可以定义的特定大小的 block 读取文件。
如果您依赖于按行读取数据,您可以使用 file(),它会比 file_get_contents 慢,但它会为您提供一个包含文件行的数组。
如上文所述,为了给您更好的答案,我们需要更多信息。
关于PHP最快读取服务器响应的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2670767/