簡體   English   中英

使用AWS PHP SDK v2在S3區域之間進行非阻塞對象復制

[英]Non blocking object copy between S3 regions with the AWS PHP SDK v2

我正在嘗試使用AWS PHP SDK v2中的S3Client->copyObject()操作在位於不同區域的存儲桶之間復制Amazon S3中的大對象。

對象復制確實可以工作,但是問題是復制操作可能需要花費一些時間才能返回響應,並且阻塞了PHP腳本的執行,在這種情況下,這不是我想要的。

有什么方法可以通過SDK(可能帶有一些較低級別的Guzzle設置)以非阻塞方式進行copyObject()調用嗎? 我需要這種非阻塞行為,因為我必須將常規運行狀況檢查發送給另一個服務(Amazon SWF),以使其知道我的腳本仍在運行。

如果無法以非阻塞方式執行調用,我知道還有其他可能的解決方案,但我希望從對SDK有更多經驗的人那里獲得更多想法。

(我認為我可以采取的一種可能的方法是在子進程中進行fork()進程並執行copyObject()操作;此外,如果Guzzle支持並確保回調方法,則某種進度回調也將起作用。每分鍾至少執行一次)

為此,您需要創建一些將在后台運行的進程。

您可以為此使用亞馬遜隊列服務。

檢查此鏈接-http : //aws.amazon.com/sqs/

解決方案1-您只需要提供作業即可排隊服務,它將在后台執行您的任務,因此您的PHP腳本無需等待。

解決方案2:還有另一種方法是讓您的PHP cron作業每分鍾或5分鍾執行一次。 您可以將任務存儲在數據庫中,而cron將從數據庫訪問任務並執行它。 工作原理您只需要將任務轉儲到DB中並返回即可。 然后,您的cron將從DB中讀取並在后台執行它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM