2011-09-17 4 views
1

私はサーバ側でmp3ファイルをエンコードする.batファイルを持っていますが、ファイルが存在するかどうかをチェックしてHTMLリスト項目として追加するphp関数。私が実行している問題は、mp3ファイルがサーバー側でエンコードされていないことがあります。誰かがファイルをダウンロードしようとしているときに、それがエンコードの過程にあると、ブラウザがクラッシュします。PHP - ファイルのエンコードが完了しているかどうかを確認します

アイテムを一覧表示する前にファイルサイズが増加したことを確認することができますか?

function ListDir($dir_handle,$path) { 
    global $listing; 
    echo "<ul>"; 
    while (false !== ($file = readdir($dir_handle))) { 
     $dir =$path . $file; 
     if(is_dir($dir) && $file != '.' && $file !='..' && filesize($file) { 
      $handle = @opendir($dir) or die("Unable to open file $file"); 
      echo "<li>".$dir; 
      ListDir($handle, $dir); 
      echo "</li>"; 
     } elseif($file != '.' && $file !='..' && $file !='.htaccess') { 
      $new_string = ereg_replace("[^A-Za-z.]", "", $file); 
      echo '<li><a href="'. str_replace('wav', 'mp3', $dir) .'">'.str_replace('wav', 'mp3', $new_string).'</a></li>'; 
     } 
    } 
    echo "</ul>"; 
    closedir($dir_handle); 
} 

答えて

4

バットエンコードを行い、「終了」状態の最終位置に移動します(存在しない場合)。完了していません。これは、作業ディレクトリから本番ディレクトリに同じファイルを使用する点を除いて、drew010の答えに似ています。

これにより、準備ができるまで問題が発生する可能性があるまで、すべてのリソースからアクセスできなくなります。

+0

ありがとう!それは私のところに道の90%を得た。ファイルが一時ディレクトリーから最終ディレクトリーにコピーされている間に若干の遅延があります。私はそれで生きなければならないと思う。 – user547794

1

あなたが本当に最後のファイルサイズを知っているので、あなたのbatファイルがmp3filename.workか何かのようなファイルを作成していた後、バットを持つことはできません。ここで

は、ファイルが存在するかどうかをチェックする機能ですエンコーディングが終了したときにファイルを削除します。したがって、.workファイルが存在しない場合は、エンコーディングが実行されます。

+0

私は実際にソースファイルをアーカイブに保管しています。 – user547794

+0

ファイルのエンコードを開始する前に、エンコードプログラムが終了した後、ファイルがエンコードされていないことを示すために使用できる一時ファイルを作成し、batファイルで一時ファイルを削除します。一時ファイルが存在しない場合は、そのエンコードが終了しています。私はソースファイルがアーカイブにあることは重要ではないと思う。たぶんあなたのバットファイルのコードを投稿してください。 – drew010

関連する問題