遍历PHP中服务器上远程托管的500 MB文件的字节

我有一个大型文件托管在远程服务器上(500 MB)。 该文件包含使用AMF3嵌入的可识别的字节块。 这些块可以通过我提前设置的预定义字符串前缀进行标识。 在这种情况下,我在创建期间的各个点将字符串'prefix'附加到文件中。

我想使用PHP遍历整个文件长度,找到这些字符串前缀的确切位置,而无需在服务器上本地复制文件,但是我遇到了问题。 现在,我正在使用一个简单的file_get_contents和一个指向远程服务器上的文件的HTTP URL,如下所示:

$file = file_get_contents('http://remote.server.com/file.xxx')

while($offset = strpos($file, 'prefix', $offset + 1)){

//find prefix string value here using regex
// store the position of the value somewhere

}

不幸的是,它在真正大文件上工作得不好,我得到了500内部服务器错误。 是否有更好的方法遍历整个远程托管的文件的字节,而无需先在本地复制文件?


这非常强烈

$file = fopen('http://remote.server.com/file.xxx');
 $contents = '';
while (!feof($file )) {

   $contents .= fread($file , 8192);
   $found = strpos($contents , 'prefix') ;
    if ($found  > 0)
         {
          //do your thing
          $contents  = substr($contents,$found,8192) ;
            } 
}

您可以使用fopen() ,然后以块的形式读取文件,而不是读取整个文件,随时搜索前缀字符串。 但是如果前缀恰好跨越块边界,这可能会变得棘手。

链接地址: http://www.djcxy.com/p/65601.html

上一篇: Traversing bytes of a 500 MB file hosted remotely on a server in PHP

下一篇: what is the most reliable method to get a file from remote server in php