LoginSignup
6
6

More than 5 years have passed since last update.

Amazon S3への画像アップロードツールをphpで作ってみた

Posted at

今回の成果物はこちら

このプログラムを作った背景

「ゲームで使う大量の画像ファイルをS3にアップロードしたい」

―― はい

「しかし量が多すぎてめちゃくちゃ時間がかかる」

―― 今日も残業ですね

「水曜日の残業は今年から禁止された」

―― 特別残業申請出しましょうか?

「まて、まだ希望はある」

―― 冗談ですよ

「追加があるたびに全部アップロードするのをまずやめよう」

―― それもそうですね

「そこで差分の判定にmd5を使う」

―― 常套手段ですね

「画像ファイル自体はsubversionで管理されているから、.svn等の隠しフォルダ以下は除外したい」

―― あっ、Thumbs.db をコミットしてしまいました

「おいやめろ!!」

―― この .DS_Store というファイルはなんでしょう?

「それもアップロードしちゃいかん」

―― そういえばモンハンクロス買いましたよ

「関係ない話はあとでやれ。あとそのDSじゃない。」

―― 結局どのような実装になったのでしょうか

「まず、S3にファイルをアップロードするのが一番重い。一方でダウンロードはわりと速い。」

―― S3そういう設計ですからね

「まずローカルでmd5値を計算して、別途ファイルに保存する。2回目以降ではオリジナルファイルとmd5ファイルの更新タイムスタンプを比較して、オリジナルのほうが新しければmd5を計算しなおす。md5が一致しなければ更新されたと判定する。」

―― makeのパクりですね

「全くその通りだ。」

―― その他の工夫は?

「md5ファイルはS3にも一緒にアップロードする。ローカルのディスクがぶっ壊れることなど日常茶飯事だからだ。」

―― なるほど

「これで必要最低限の時間だけでアップロードが完了する」

―― 便利ですね

「あとはアップロード確認ツールから画像を見比べてデプロイ作業は完了だ」

―― オチはどうしましょうか?

「心配ない。不具合を作りこんでおいた。」

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6