2013-04-03 55 views
3

我正在爲某些事情而苦苦掙扎。PHP和jQuery ajax調用不等待響應

我有一個PHP頁面,使用jQuery $.ajax對另一個頁面執行ajax調用。它將請求異步發送到處理頁面,然後返回響應。

現在可以正常工作,但我們正在對後端進行一些更改,並且運行的處理(SQL存儲過程)現在花費的時間比5分鐘長。等待很好,因爲我們正在處理SQL中接近200MM的記錄。

事情是我需要能夠發送請求到處理頁面,而不必等待響應。處理頁面打完在PHP這樣的存儲過程:

  $query = $dbh2->prepare('exec sp_name :countID'); 
      $query->bindParam('countID', $countID); 
      $query->execute(); 

現在再次存儲過程需要一段時間來運行,我們不需要的,結果被呈現給用戶。雖然有一些額外的PHP代碼需要在存儲過程之後運行,但不需要將任何內容發送回瀏覽器。

我想弄清楚一種方式,我可以調用處理頁面,它運行存儲過程和其他代碼,但用戶的瀏覽器不需要等待響應。現在,如果嘗試過早地點擊頁面,它基本上會將瀏覽器鎖定一段時間,並且不會完成處理。

任何洞察這將是偉大的。

在此先感謝您的幫助。

+1

也許使用http://php.net/manual/en/fun ction.exec.php,然後用它在服務器上執行一個文件並返回「ok」給瀏覽器。 – 2013-04-03 23:41:10

+0

我想你想要的是異步PHP調用?[http://stackoverflow.com/questions/124462/asynchronous-php-calls] – Borik 2013-04-03 23:49:12

回答

0

您可能會考慮爲$.ajax()方法設置timeout選項。通過設置一個超時時間可能是半秒或者其他的,ajax會超時並進入錯誤處理程序(如果有的話)。

+1

感謝您的幫助。我嘗試在$ .ajax()請求上設置一個超時值,並且超時並啓動錯誤處理程序,但瀏覽器仍然鎖定,直到該過程完成。有關於此的任何其他想法? – Sequenzia 2013-04-04 01:05:20

2

Sequenzia,如果我理解正確,那麼我經歷了大量的研究後,一直在這裏並找到了解決這個問題的方法。

幾個月前,我提供了一個類似問題的答案。不幸的是,OP和其他任何人都沒有接受/評論/ upvoted/downvoted - nada。

這裏有一些有用的參考資料:

運行的後臺腳本(UNIX命令)

如何編寫PHP $ shortopts和$ longopts

這是解釋傳遞給PHP腳本參數的方法在命令行中運行時,或者從另一個殼 - PHP腳本EXEC()