![](/img/trans.png)
[英]Amazon S3 setting metadata fails using AWS SDK PHP v2 upload()
[英]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.