1

S3Client->copyObject()AWS PHP SDK v2の操作を使用して、異なるリージョンにあるバケット間で Amazon S3 の大きなオブジェクトをコピーしようとしています。

オブジェクトのコピーは機能しますが、問題は、コピー操作が応答を返すのにかなりの時間がかかる可能性があり、PHP スクリプトの実行がブロックされることです。これは、この特定のケースでは必要ありません。

copyObject()SDK を介して非ブロッキングの方法で呼び出しを行う方法はありますか (おそらく低レベルの Guzzle 設定を使用)? 定期的なヘルスチェックを別のサービス (Amazon SWF) に送信して、スクリプトがまだ実行中であることを知らせる必要があるため、このノンブロッキング動作が必要です。

呼び出しをブロックしない方法で実行できない場合、他に解決策があることは承知していますが、SDK の経験が豊富な人からアイデアをもっと得たいと考えています。

(私が取ることができると思う1つの可能なアプローチはfork()、プロセスとcopyObject()子プロセスで操作を行うことです;また、Guzzleがそれをサポートし、コールバックメソッドが少なくとも1回実行されることを保証する場合、ある種の進行コールバックも機能します分)

4

1 に答える 1

0

このためには、バックグラウンドで実行されるプロセスを作成する必要があります。

これには、Amazon キュー サービスを使用できます。

このリンクを確認してください - http://aws.amazon.com/sqs/

解決策 1 -キュー サービスにジョブを提供するだけで、バックグラウンドでタスクが実行されるため、PHP スクリプトは待機する必要がありません。

解決策 2 - PHP cron ジョブを 1 分または 5 分ごとに実行する別の方法があります。タスクをデータベースに保存すると、cron が DB からタスクにアクセスして実行します。 仕組みDB にタスクをダンプして戻るだけです。次に、cron が DB から読み取り、バックグラウンドで実行します。

于 2014-10-28T06:48:00.060 に答える