Php md5_文件是否有远程文件的内存限制/超时?

Php md5_文件是否有远程文件的内存限制/超时?,php,hash,checksum,md5-file,Php,Hash,Checksum,Md5 File,我一直在尝试使用PHP的md5_文件函数从远程源散列一些zip文件的内容: md5_file($url); 我有一个问题与几个网址;我得到以下错误: Warning: md5_file($url): failed to open stream: HTTP request failed! 我认为这是因为在这些情况下zip文件相当大 但到目前为止,我还没有找到多少md5_文件哈希远程文件的信息或案例研究来证实或反驳我的理论。似乎大多数人都会抓取文件并在本地进行散列(如果需要,我可以这样做) 所以

我一直在尝试使用PHP的md5_文件函数从远程源散列一些zip文件的内容:

md5_file($url);
我有一个问题与几个网址;我得到以下错误:

Warning: md5_file($url): failed to open stream: HTTP request failed!
我认为这是因为在这些情况下zip文件相当大

但到目前为止,我还没有找到多少md5_文件哈希远程文件的信息或案例研究来证实或反驳我的理论。似乎大多数人都会抓取文件并在本地进行散列(如果需要,我可以这样做)


所以我想这真的是出于好奇:md5_文件对远程文件的大小有任何特定的限制吗?它是否有一个会阻止下载较大文件的超时时间?

最简单的解决方案可能是通过以下方式自行设置超时时间:

ini_set('default_socket_timeout', 60);  // 60 secs
当然,如果这些文件很大,另一个选择是使用,因为您可以指定文件大小限制。您不希望将其指定给值,因为这样包装会更有效:

$limit = 64 * 1024; // 64 being the number of KB to limit your retrieval
md5(file_get_contents($url, false, null, 0, $limit )); 
ini_set('default_socket_timeout', 60);  // 60 secs
md5(file_get_contents($url));
现在,您可以在文件的某些部分创建MD5,如果有人试图向您发送2GB文件,您就不用担心了。当然,请记住,对于文件的一部分,它只是一个MD5,如果在此之后发生任何更改,则会中断。您根本不必设置文件大小限制,只需像这样尝试:

$limit = 64 * 1024; // 64 being the number of KB to limit your retrieval
md5(file_get_contents($url, false, null, 0, $limit )); 
ini_set('default_socket_timeout', 60);  // 60 secs
md5(file_get_contents($url));

某些托管环境不允许您以这种方式访问远程文件。我认为MD5函数的操作与
file()
函数类似。确保可以先使用该命令访问远程文件的内容。如果没有,您可以卷曲到文件及其内容。

您可以尝试
设置时间限制(0)
如果文件相对较大,并且您不确定它将花费多少时间,md5只有两个参数。