2016-08-29 6 views
2

私はgetID3ライブラリを使用してリモートビデオファイルの詳細を取得しています。私は、ファイルの詳細を取得するためにファイルの一部を読み込もうとしていますが、いくつかのビデオは最初から完全な詳細を持っていません。php getID3は更新されたファイルの同じ情報を返しますか?

これらの動画については、完全な動画をダウンロードしてから関連情報を抽出しようとしています。しかし、ビデオが完全にダウンロードされた後でも、getID3-> analyze($ filename)は、同じエラーのあるファイル情報を返します。

ビデオをコピーして、コピーしたビデオで関数analyze($ filename.'copied.mp4 ')を実行すると、ファイルの内容が同じでも正しい情報が返されます。おそらくgetID3が動画を再読み込みしていない可能性がありますが、動画をコピーせずにこの問題を解決するにはどうすればよいですか。

下記のコードをご覧ください。

if ($fp_remote = fopen($remotefilename, 'r')) { 
    echo 'conn opened'; 
    $localtempfilename = tempnam('/home/xerox/abc', 'whateva').'.mp4'; 
    if ($fp_local = fopen($localtempfilename, 'wb')) { 
     $count = 0; 
     $countExpiry = 8; 
     while ($buffer = fread($fp_remote, 8192)) { 
      $count++; 
      fwrite($fp_local, $buffer); 
      if ($count >= $countExpiry) { 
       fflush($fp_local); 
       $getID3 = new getID3; 
       $ThisFileInfo = $getID3->analyze($localtempfilename); 
       if ($ThisFileInfo["error"]){ 
        print "problem encouterd"; 
        $countExpiry += 1000; 
       } else { 
       break;} 
      } 
     } 
     fclose($fp_local); 
     $getID31 = new getID3; 
     copy ($localtempfilename, $localtempfilename.'_copied.mp4'); 
     $ThisFileInfoz = $getID31->analyze($localtempfilename.'_copied.mp4'); 
     // Delete temporary file 
     unlink($localtempfilename); 
     fclose($fp_remote); 
    var_dump($ThisFileInfoz); 
    } 

} 

答えて

0

clearstatcacheへの呼び出しは ファイルシステムによってキャッシュされるファイルサイズのようなものを繰り返し呼び出しているので、私のため

を、問題を解決し、getID3は、ファイルの終わりを超えて読み取ることはありません。

ソース:James Heinrich, developer of getID3

関連する問題