首頁  >  文章  >  後端開發  >  如何處理展示後台程式即時產生的檔案?

如何處理展示後台程式即時產生的檔案?

WBOY
WBOY原創
2016-10-10 11:56:111335瀏覽

問題

我在寫一個php程序,功能是收到前端傳過來的參數之後,呼叫後台一個計算程序,根據這個參數產生一副圖片(這個過程需要一定時間,大約2s以上)。
最後在介面上,我需要等這個圖片產生以後,將圖片展示在一個div裡。
所以問題是:在圖片生成期間,介面上就處於沒反應的狀態了;
另外,萬一程式跑失敗了,圖片沒有生成,我也沒辦法知道;

嘗試的解決方法

我現在用的方案是,用setInterval每秒輪詢一次看圖片有沒有生成,有的話就把圖片的url傳給前端的目標img標籤。 10秒還沒拿到這個url,就判定生成失敗了。

但是感覺這個方法很笨,而且萬一失敗了要等很久才能知道。

所以想問,大家有沒有什麼好的建議,或是好的實作方法,讓這個處理的流程使用者體驗更好一點?

回覆內容:

問題

我在寫一個php程序,功能是收到前端傳過來的參數之後,呼叫後台一個計算程序,根據這個參數產生一副圖片(這個過程需要一定時間,大約2s以上)。
最後在介面上,我需要等這個圖片產生以後,將圖片展示在一個div裡。
所以問題是:在圖片生成期間,介面上就處於沒反應的狀態了;
另外,萬一程式跑失敗了,圖片沒有生成,我也沒辦法知道;

嘗試的解決方法

我現在用的方案是,用setInterval每秒輪詢一次看圖片有沒有生成,有的話就把圖片的url傳給前端的目標img標籤。 10秒還沒拿到這個url,就判定生成失敗了。

但是感覺這個方法很笨,而且萬一失敗了要等很久才能知道。

所以想問,大家有沒有什麼好的建議,或是好的實作方法,讓這個處理的流程使用者體驗更好一點?

  • 可以搞一個loading介面,簡單一點就找一個轉圈的GIF填補那個div,

  • 查詢圖片是否產生可以考慮使用websocket,

  • 還有一個建議是你在生成圖片的程式裡判定是否能夠成功生成,如果不能的話生成一個代表錯誤的圖片,這樣可以保證有圖片傳到前端。

這裡的關鍵是最好別用「10秒還沒回授,肯定失敗了」的這種邏輯。而是後台失敗了,馬上呼叫錯誤處理的程式碼塊,回傳訊息,告知用戶失敗了。我不大理解php裡是如何處理的,在python裡:

<code>try: #尝试执行下面代码,若失败,执行except里的代码
    # 这里写创建图片的逻辑,image = ...
    return success(message='Done.',data=image) #返回成功消息和图片 
except Exception as ex:  #若发生错误
    logger(ex) #记录错误文档
    return fail(message='Error.') #马上返回失败消息,而不是等10秒</code>

Ajax可以解決,成功和失敗回呼來處理,新版的還有超時處理

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn