私は、ファイルをコンピュータ間で同期させる必要があるプロジェクトを持っています。ファイルを同期する
私の問題は、私のプログラムでは、実行時間が30秒から切れるというエラーが出るということです。
今、私はこれでPHPでプログラムを作っています。 これは、古いファイルをブロックに分割し、各ブロックのmd5ハッシュを作成し、任意のオフセットで指定された長さのハッシュを動的に作成することにより、ファイルを と比較します(開始から修正ファイルの最後まで)。転送する必要のないブロック
そこにいずれはすべての経験、アドバイス、リンクや私は、PHP、JavaやC++で動作するように贅沢を持っているあなた以上welcome.Thnx
p.sをコーディングしています。
私が与えているコードは、テスト用です。同じ場所から2つのファイル(1つの変更されたファイルと元のファイル)が古いファイルのブロックをハッシュし、それを1つおきに新しいファイルのハッシュと比較しますオフセット。これが役に立てば幸い:
<html>
<body>
<?php
$k=0;
$old_file = file_get_contents('11.jpg');
$new_file = file_get_contents('12.jpg');
$block_length = 2048;
$j = 0;
$md5_hashes_old = array();
$md5_hashes_new = array();
$diff_blocks = array();
$first_char=array();
$k = 0;
while(1){
if($j >strlen($old_file))
break;
$block = substr($old_file,$j,$block_length);
$md5_hashes_old[$k] = md5($block);
$first_char[$k]=$block[0];
$j = $j+$block_length;
$k++;
}
$j = 0;
$k = 0;
$no_of_blocks = sizeof($md5_hashes_old);
echo $no_of_blocks;
$matched_blocks = array();
$matched = 0;
$fc=0;
echo $md5_hashes_old[1].'</br>';
for($i=0;$i<$no_of_blocks;$i++){
$j =0;
while(1){
$block = substr($new_file,$j,$block_length);
$md5_hash = md5($block);
if($md5_hashes_old[$i] == $md5_hash){
$match_block = array();
$match_block['block_no'] = $i;
$match_block['index'] = $j;
array_push($matched_blocks,$match_block);
break;
}
else
$j++;
if($j > strlen($new_file))
break;
echo 'old='.$md5_hashes_old[$i].' i='.$i.' new='.$md5_hash.'</br>';
}
}
print_r($matched_blocks);
?>
</body>
</html>
はね... – aioobe
はあなたがで問題が発生したコードを投稿してくださいだろうか?あなたがしたい言語は何でもできます。 – mindandmedia
rsyncを使用するという贅沢はありますか? –