我的意思是,我有一个应用程序,第一步只需要获取网络服务器中某些图像的大小,为此,我使用的是 fsockopen。阅读content-length
标题后,我关闭了套接字。
这个问题可能很愚蠢,但我对 tcp 协议和互联网上的整个数据传输过程以及文件如何通过这个套接字到达我的 php 应用程序知之甚少,所以我想知道的是:我是否通过在读取整个文件之前关闭套接字,还是它仍然完整地传输到我的本地机器?托管图像的服务器呢,它是否知道套接字已关闭并停止发送数据?
这取决于一堆东西。如果图像是 10 TB,那么可以。绝对地。如果是100k,那么可能不是。
这一切都与缓冲区有关——到处都是缓冲区。每台计算机上的缓冲区,它们之间网络中的每个设备上的缓冲区......以及延迟和可用带宽。
但基本上如果文件很大,是的,你正在节省带宽。如果它很小,你不是。准确地计算出来会很困难,而且涉及的变量数量会很大。除非您控制了完整的端到端系统,否则收支平衡点可能会随着时间的推移而改变(即便如此,您难以控制的许多事情仍然会影响答案)。
基本上是的,对于足够大的文件,但如果你使用 HTTP HEAD 请求而不是完整的 GET 请求,你会节省更多。然后,您将保存所有文件。