2014-10-07 41 views
0

我有一個PHP頁面,用表單,表單提交的變量到開始工作調用幾個方案最佳方式提交一個表單,並保持工作

,如果我在同一個標​​籤提交此表PHP腳本,如果通過點擊導航欄中的某個元素來更改網址,表單將停止工作。

如果我將表單提交給另一個選項卡,我不能單擊原始選項卡中的任何內容,除非管道完成工作。

我如何以最好的方式處理這個問題?

+0

在你的數據庫中創建一個開關,* 1/0 *爲cronjob及時工作 – 2014-10-07 16:16:18

回答

2

如果你不感興趣的劇本的「結果」(假設它只是重要的是,它完成)

您可以添加ignore_user_abort(true)到腳本處理形式:http://php.net/manual/en/function.ignore-user-abort.php

然後,無論用戶切換頁面,PHP都會完成腳本。

如果您需要腳本的結果,您需要實現一些異步JavaScript來跟蹤當前的處理狀態 - 或讓用戶等待完成。

根據該腳本將運行多久,你也許還需要增加時間限制: http://php.net/manual/en/function.set-time-limit.php

但請記住,大部分用戶會等到他們收到提交的一些視覺反饋。因此,如果需要10分鐘,那麼以同步的方式處理請求可能是一個糟糕的主意,如果你不真的需要這樣的話。

+0

我也嘗試ajax異步調用,但是如果我改變頁面,我調用的腳本完成 – Cristian 2014-10-07 16:21:02

+0

@Christian:Call它是異步的,並將「ignore_user_abort」的值添加到處理文件中。用戶將得到即時反饋(*您的請求已計劃執行*),腳本將運行,直到完成。 – dognose 2014-10-07 16:22:20

+0

我把async:true放在ajax調用中,而ignore_user_abort(true); set_time_limit(0);如果我嘗試更改頁面,它將無法工作,直到腳本完成 – Cristian 2014-10-07 16:34:09

相關問題