在用戶註冊我正在匯入大量來自第三方服務信息的,
但問題是,網頁需要大量的加載,有沒有辦法來運行這個「進口」過程在後臺? (因此用戶不必等待看到這麼多的頁面,可能在下次刷新了進口就完了)
感謝
在用戶註冊我正在匯入大量來自第三方服務信息的,
但問題是,網頁需要大量的加載,有沒有辦法來運行這個「進口」過程在後臺? (因此用戶不必等待看到這麼多的頁面,可能在下次刷新了進口就完了)
感謝
您需要註冊過程分解爲兩個步驟:一個輕量級的網頁無需等待導入完成即可加載,另一個腳本可以完成繁重的工作。第一個將通過AJAX觸發第二個。最終的結果將是一個「正在處理您的註冊」頁面,在工作者腳本完成時適當更新。
,這樣如果用戶在等待網頁關閉瀏覽器窗口中的註冊過程不會中斷您應該小心在工人腳本的開頭調用ignore_user_abort
。
ignore_user_abort會讓腳本運行,即使它被異步調用並且用戶對主標籤進行了cloing? –
@ToniMichelCaubet:就服務器而言,沒有異步調用或主選項卡。所有這些只適用於客戶的角度。 – Jon
好吧,是的...? –
您必須設置一個執行curl命令來訪問PHP腳本(外部,如'curl http://domain.com/php/something.php')或只執行指向內部文件的php命令的cron作業(如果您正在運行Linux)。
您可以製作一個計劃程序,執行每分鐘(這是cron作業支持的最小執行時間)並執行工作的「塊」。當然,你必須設置PHP跳過默認使用的30秒執行限制。
您是否考慮過通過ajax調用獲取這些信息,從而立即顯示頁面並在信息加載時顯示優雅的加載器? – LoneWOLFs
只是大聲思考......你可以通過cron在服務器上運行一個PHP文件,比如說每5分鐘一次,它檢查一個新用戶是否被註冊。如果是這樣,它可以啓動導入過程,並在該過程完成後,在db列中標記「完成」。您可以閱讀並相應顯示信息。 –
@LoneWOLFs是的,但問題是,如果用戶關閉ajax,那麼進程將中止 –