我有一個腳本,當前有一個步驟,在客戶註冊後觸發語音廣播。這是一個名爲callfire的nusoap。從php中關閉nusoap,不要等待結果
的潛伏期有相當高的,而且它增加了大約2秒鐘,我的亞秒級的註冊過程。因此,我有人不止一次地點擊註冊按鈕。
有沒有辦法告訴應用等不到結果,只是繼續前進?
有可能通過將所有的NuSOAP代碼在一個單獨的文件中作弊,然後打開一個套接字到該文件,但我正在尋找一個更清潔的方式。
或者有沒有辦法發射一個功能,而不是等待結果?我不認爲有。
我有一個腳本,當前有一個步驟,在客戶註冊後觸發語音廣播。這是一個名爲callfire的nusoap。從php中關閉nusoap,不要等待結果
的潛伏期有相當高的,而且它增加了大約2秒鐘,我的亞秒級的註冊過程。因此,我有人不止一次地點擊註冊按鈕。
有沒有辦法告訴應用等不到結果,只是繼續前進?
有可能通過將所有的NuSOAP代碼在一個單獨的文件中作弊,然後打開一個套接字到該文件,但我正在尋找一個更清潔的方式。
或者有沒有辦法發射一個功能,而不是等待結果?我不認爲有。
您可以將代碼移至cli腳本。從Web服務器PHP線程運行cli腳本。然後CLI進程分叉,父進程退出。 Web線程可以繼續,CLI子進程可以註冊用戶。
在SOAP調用失敗的情況下,我建議您將數據存儲在某處並將其刪除或將其標記爲完成一次即可成功。您可以定期檢查cron作業以查看是否有呼叫失敗,然後重試,然後通知某人(管理員,用戶)。
如果你有一定的作用,這只是必須有「很快」,而不是「馬上」,然後將其添加到某種類型的隊列(例如數據庫表)。
接下來,有一個cron作業沿着每一分鐘來左右和執行在這個隊列中的任務。
據我所知,沒有辦法直接斷火的功能和移動過去,它在執行鏈......但也有一些很酷的/簡單的解決方案:
您不妨考慮一下從瀏覽器做一些Ajax請求:在
頁(他的賬戶頁面,例如)
恕我直言,最好(更安全,永遠是可行的,不依賴於客戶端上,...)方式真的會用一些請求隊列,像Paul suggested。
這就是我選擇的解決方案。
但是,當然,它增加了用戶在簽名和請求被髮送的時間之間有一些延遲...但它是壞?