2013-04-23 13 views
1

我遇到了一個奇怪的情況,我不太確定從哪裏開始尋找。前端有一個knockout.js表單,後端有一個CakePHP表單。CakePHP GET請求僅在部分時間失敗

截至目前,我將一些JSON數據從knockout.js表單發送到CakePHP。這個PHP做了一些處理,然後以JSON格式將結果回顯給knockout javascript文件。

那麼,問題是,當我通過CakePHP進行PHP設置時,它似乎只能工作1/4時間。當我的webroot中有這個PHP文件時(只是一個標準文件,與Cake沒有關聯,因爲淘汰賽畢竟是後端不可知的),它在100%的時間內都能正常工作。

因此,這裏有兩個數據流

Fails frequently: knockout.html -> knockout.js -> CakePHP Controller -> echo in CakePHP view-> knockout.js -> knockout.html 

Works 100%: knockout.html -> knockout.js -> PHP in webroot, echo from the same page -> knockout.js -> knockout.html 

我只想用PHP文件在我的根目錄,但我必須在數據庫中查詢一些東西,我想保持所有查詢了去蛋糕,而不是外部來源。

CakePHP方法可能花費太長時間並且失敗,因爲它沒有足夠快地返回結果嗎?

編輯 - 我改變了我的控制器,所以沒有計算,它只是傳遞一些JSON編碼的文本到視圖。這不會產生任何錯誤,並且已經100%的工作。那麼,可以肯定地說CakePHP導致錯誤的時間太長了嗎?我知道一個框架比普通的PHP需要更長的時間,但爲什麼會導致它失敗呢?我沒有做任何激烈的計算。

+0

你能簡單解釋一下你在做什麼樣的計算?它涉及數據庫查詢嗎?也許通過requestAction調用另一個動作? – Headshota 2013-04-23 11:06:57

+0

@Headshota首先,我從我的數據庫中抓取一個項目,然後使用PHPquery從另一個站點獲取一些內容(3個實例),這可能需要一段時間。但是,我不明白爲什麼CakePHP和標準PHP文件之間有如此巨大的差異。我甚至試圖通過設置該變量等於預期值並將其用於PHPquery來消除數據庫查詢,並且它偶爾也會導致我相信CakePHP無法與PHPquery一起使用。 – user1104854 2013-04-23 11:19:55

+0

@Headshota我應該澄清一點,我只從我的數據庫中獲取一次內容,然後使用PHPquery從外部源獲取項目三次。 – user1104854 2013-04-23 11:40:47

回答

0

我把它用在一個非常迂迴的路上。它現在正在100%的時間內工作,但我對如何做到這一點並不滿意。

正如我所解釋的,我在我的ItemsController中使用PHPQuery。我採取了所有這些邏輯,並且完全在Cake結構之外並且在我的webroot中創建了一個單獨的PHP文件。因此,不是針對相應操作調用我的ItemsController函數,而是調用webroot中的文件。從這個文件我訪問數據庫,查找我需要的,然後執行PHPQuery任務。

很奇怪。在CakePHP之外運行100%。在CakePHP函數中使用時失敗的時間超過了50%。我不明白,但至少它工作。

+0

想知道,你到底在用什麼PhpQuery?通過JavaScript/jQuery直接獲取外部數據不會更快嗎?通過PHP爲每個請求獲取外部數據似乎是一個很大的開銷,除非你緩存結果 – thaJeztah 2013-04-23 21:50:40

+0

我想這可能是,但是,我使用PHP的部分原因是爲了隱藏一些代碼和因爲我必須查詢數據庫(使用PHP)。如果我沒有弄錯Javascript(至少是.js文件),那麼每個人都可以看到Javascript – user1104854 2013-04-23 21:59:50

+0

嗯,我注意到PhpQuery自2010年以來沒有收到任何更新。在大多數情況下緩存外部請求是可取的(當然取決於如何通常你會期望這些外部數據會改變)。還要考慮PHP的內置Dom函數,根據您的要求,這可能足以滿足您的需求。請參閱文檔[DomDocument :: loadHTML()](http://php.net/manual/en/domdocument.loadhtml.php)和此問題[如何解析和處理HTML/XML](http:// stackoverflow。 COM /問題/ 3577641 /如何對語法分析和處理,HTML,XML) – thaJeztah 2013-04-23 22:07:25