ロック処理なら俺はこんな感じで書いてるけど、何か気が付いたとこあったら教えて

if ($fp_lock = fopen($lock_file,"w")) {
  if(flock($fp_lock,LOCK_EX)){

    if($fp = fopen($txt,"r")){
      if(flock($fp, LOCK_SH)){
        $data=fgets($fp);
        flock($fp, LOCK_UN);
      }
      fclose($fp);
    }

    if($fp = fopen($txt,"w")){
      if(flock($fp, LOCK_EX)){
         rewind($fp);
         fputs($fp, $data);
         flock($fp, LOCK_UN);
      }
      fclose($fp);
    }

    flock($fp_lock,LOCK_UN);
  }
  fclose($fp_lock);
}