簡體   English   中英

我應該如何設計PHP上傳和調整圖像腳本的大小,以最好地捕獲和報告錯誤

[英]How should I design my PHP upload and resize image script best to catch and report errors

我正在編寫一個PHP腳本,它將位於Amazon EC2中運行的服務器上。 它將接收上載的文件,在數據庫中創建記錄,重命名文件以匹配數據庫ID,調整文件大小,將文件移動到服務器上的新位置以及將圖像文件放在Amazon S3上。

在這些階段的每一個階段,都有失敗的可能性,這將導致腳本中斷,並且如果用戶正在上載許多文件,則將不會上載將等待下一個文件。

因此,在所有這些活動中,我都知道我需要捕獲任何錯誤,記錄下來以供日后處理,然后移至下一張圖像,或者報告發生了問題。

我想我想在數據庫中記錄上傳失敗的情況,以便可以獲取上傳失敗時的報告,並記錄文件名,上傳者的用戶名以及任何其他可以讓我與用戶聯系的信息,或者是否位於例如,調整發生錯誤的調整大小階段,調整圖像大小並將其放在Amazon S3上。

我不是一個非常有經驗的PHP編碼器,是適用於所有上述情況的Try Catch塊。 我應該使用Try Catch進行rename()嗎?

干杯

因此,我認為該解決方案最重要的部分可能是存儲有關故障事件的詳細信息,以便您以后可以重試,調試問題,或者至少在必要時與用戶聯系。

S3可能是理想的選擇-我基本上會編寫一個錯誤處理函數,該函數將在調用時將請求周圍的所有詳細信息(可能是所有HTTP POST變量,HTTP請求標頭等)和圖像捆綁在一起,並將其存儲在S3供將來檢索。 由於您的服務在EC2上運行,因此無法寫入S3的幾率非常低,因此這可能是一個有效的綜合解決方案。

對於S3寫入失敗,我會進行少量重試,但由於它不太可能,所以不詳盡。 如果您想記錄存儲在S3上的事實,甚至可以循環使用SimpleDB日志記錄機制,但這並不是絕對必要的,因為您可以只在“錯誤存儲區”中列出文件以查看是否存在任何文件。錯誤。 通過請求每個對象,您還可能看到問題所在。

完成此操作后,您可能只想將try / catch包裹在其他故障點和故障事件上,調用S3存儲功能並繼續進行下一個上載。

如果您的服務起飛了,您可以通過將錯誤處理位作為不可避免的存儲和排隊方法的一部分來上載和處理這些上載,來進一步改善這一點。 這種方法可能涉及始終將上傳的文件始終存儲在S3上,然后在SQS上排隊處理請求,因此您的錯誤處理功能可以簡單地引用已存儲的S3文件,而不必捆綁和存儲。

希望有幫助!

暫無
暫無

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

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