2016-09-22 38 views
0

我需要調用一個SAS存儲過程大約需要5分鐘,無需掛斷我的瀏覽器中運行。我使用Yii堆棧並通過url調用SAS。我會附上代碼,但說實話,我已經嘗試了很多東西,現在沒有我的代碼版本變得有意義了。任何方向將不勝感激。運行長SAS存儲從PHP PROC不掛瀏覽器

注:我已經試過exec()和似乎並沒有工作。我試過ajax,並且更喜歡一個異步ajax調用,但在這一點上,我會嘗試任何東西。任何其他需要的信息,請讓我知道。

更新:我創建一個PHP控制器動作,如果我直接在瀏覽器的URL控制器的行動,成功地完成存儲過程。但是,如果我用ajax get來調用該控制器動作,則存儲過程不會執行。

+0

如果我的回答是不合適的(例如,你需要基於URL參數,不能編輯STP),請發佈您嘗試使用ajax .. –

+0

我對您使用PHP感到困惑 - 您是從客戶端瀏覽器還是PHP服務器調用SAS存儲過程? –

回答

1

ajax應該可以正常工作!如果你的存儲過程沒有參數調用,你甚至可以嘗試使用h54s(html5 for SAS)javascript library。我寫了一個關於這個here的指南。示例代碼 - 一旦配置 - 如下:

var adapter = new h54s(); // only need one instance 
var myParams = {}; // create empty object if no parameters 
var jsTablesObject = new h54s.Tables([myParams],'SASControlTable'); //make H54s dataset 
adapter.call('/Webapp/example',jsTablesObject,function(err,res) {// call STP here 
    //we just submitted an STP request, now deal with response 
    alert(res); 
    // all code here will execute AFTER the stored proc is finished 
}); 
// all code here will execute immediately 
+0

讓我試着更清楚一點,對不起。我使用ajax來調用進行SAS調用的php控制器。我這樣做的原因是用ajax調用SAS網址會給我一個CORS錯誤,我很肯定會在SAS進程運行時掛斷瀏覽器。我錯了嗎?我正在使用url字符串中的參數。 –

+0

它不一定會掛起您的瀏覽器,但如果網頁未由SAS Web服務器提供,則會存在CORS問題。你可以添加你的域名作爲例外嗎?或者禁用相同的來源策略進行測試?害怕我無法幫助PHP的一面..但無論如何,它對我來說聽起來像你只需要將整個事件包裝在事件處理程序中(在瀏覽器中使用javascript)。如果你可以添加一個新問題,顯示你已經嘗試過(ajax明智),那麼我認爲你會從這個領域得到更好的迴應。 –

1

如果你成功地從PHP調用SAS存儲過程,那麼你只需要從JavaScript異步調用你的PHP服務。

$.ajax({ 
    type: "POST", 
    url: url + '&_action=background', 
    data: data, // additional parameters 
    async:true, 
    success: function(response){ 
    alert(response); 
    // all code here will execute AFTER the PHP/STP is finished 
    } 
}); 
// all code here will execute immediately 

信貸@angel

編輯:添加_action =背景URL以下@昆汀的建議

+0

問題在於ajax調用等待SAS進程完成。如果我嘗試離開頁面,它會切斷顯示腳本的ajax調用。對我來說沒有意義,所以我知道我錯過了一些東西。 –

+0

另外,它掛在頁面上。我無法離開。它只是旋轉,直到過程結束。 –

+0

@JonSkinner如果他們離開,腳本停止的問題是什麼?如果沒有再次運行結果,那麼結果將無法返回。 –