ファイル生成のタイミング

アップロードファイルの管理

アップロードされたファイルを管理する場合、みんなどうやって管理しているのだろうか。
行う処理としては次の内容として、

    • 以下のファイル情報をDBへ格納
      • リソースID(db autoincrement val)
      • ファイル名
      • サイズ
      • 拡張子
      • システム内拡張子
      • 保存論理パス
    • ファイルを実体化(move_uploaded_file)
    • フロントへアップロード処理コールバック

んー、、

    1. リソースID以外のファイル情報を $_FILES を元に取得
    2. DBへファイル情報を作成(INSERT)
    3. autoincrementの発行値を取得(リソースID)
    4. ファイル実体化(ユニーク化のためリソースIDで物理保存する)
    5. 処理結果情報コールバック

これが妥当なのかなー。。うーん。
複数ファイルを非同期で同時アップロードした時にリソースIDがずれて付与されないか心配だな。

排他制御

処理中はユニークを確保する為に排他するべきだし。
リソースID(autoincrementカラム値)を取得するときに排他すると良いかあ。
トランザクション開始した後に

SELECT .. FROM .. FOR UPDATE

で排他してからファイル情報をINSERT、ファイル実体化してCOMMITだな。
他のプロセスは待ってから処理するだろうし、、うん、多分大丈夫か。

OSのファイル管理システムを勉強した方がいいかなあ。。