2009-03-31 10 views
1

私はS3にファイルをアップロードするために書いたPHPコードで様々な結果を得ています。その後、EC2インスタンスを呼び出してアップロードされたファイルに対してアクションを実行します。ここでアマゾンにファイルをアップロードするためにPHPでイベントをシーケンスする方法S3

は私が観光順序である -

1)ファイル

$result = s3 -> putObjectFile($uploadDIR, $bucket, $name, S3::ACL) 

2を入れてS3クラスを使用)チェック$結果

if($result == "1") { 
//file made it to s3 

3)EC2を呼び出すためのcURLを使用インスタンス内のファイルに対してアクションを実行します

私はビデオファイルでこれを使用していますが、小さなviデオファイルは正常に動作しますが(例えば3MB)、大きなビデオ(例えば80MB)の場合、コードは過去のステップ1になるようです。ファイルはs3 okに移動しますが、しばらくしてから、PHPは$ result == 1なので、残りのコードは実行されません。

このようなものを処理するにはどうすればよいですか?ファイルがS3にアップロードされたことを検出し、それがあるときにコードを実行するにはどうすればよいですか?

答えて

4

大きなファイルの場合、アップロードにかかる時間はおそらくスクリプトのmax_execution_timeよりも高くなります。

set_time_limit()関数を使用することもできますが、ユーザーからのフィードバック(ブラウザへの出力)なしでスクリプトがちょうど "ハングする"ので、ウェブページのための良い考えではないでしょう。

これはおそらく、よりよい次のようになります。

  1. 使用をset_time_limit()ので、スクリプトが死ぬことはありません。
  2. 一時的な場所(DB、セッションなど)にファイル名を格納し、ユニークなIDを取得します
  3. ファイルのステータス(FINISHED、 FAILED、UNDEFINED?)
  4. 元のスクリプトで、アクションが完了するのを待って、結果をDBに更新します。
関連する問題