1

ファイルを S3 にアップロードし、アップロードされたファイルに対してアクションを実行するために EC2 インスタンスを呼び出すために作成した PHP コードを使用して、さまざまな結果を得ています。

これが私が物事を行う順序です -

1)S3クラスを使用してファイルを配置します

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

2) $result をチェック

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

3) cURL を使用して EC2 インスタンスを呼び出し、S3 でファイルに対してアクションを実行する

私はこれをビデオファイルで使用しています.小さなビデオファイルをアップロードすると問題なく動作しますが(例: 3MB)、大きなビデオ(例: 80MB)の場合、コードはステップ1を通過していないようです.ファイルはs3に移動されますが、私の推測では.しばらくすると、PHP は $result == 1 かどうかを確認するのを待つことをあきらめ、残りのコードを実行しません。

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

4

1 に答える 1

4

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

set_time_limit() 関数を使用することもできますが、スクリプトはユーザーからのフィードバック (ブラウザーへの出力) なしで「ハング」するだけなので、Web ページにはおそらくお勧めできません。

これはおそらくより良いでしょう:

  1. スクリプトが停止しないように set_time_limit() を使用します。
  2. ファイル名を一時的な場所 (DB、セッションなど) に保存し、一意の ID を取得します
  3. ファイルのステータス (FINISHED、FAILED、UNDEFINED?) について 2 番目のスクリプトを (繰り返し) クエリするために、いくつかの AJAX コードを含むページを出力します。
  4. 元のスクリプトで、アクションが完了するのを待ち、結果で DB を更新します。
于 2009-03-31T16:00:55.303 に答える