2011-03-11 69 views
0

我正在研究可通過智能手機訪問的Codeigniter應用程序。問題是,至少對於我的運營商來說,應用程序不會因爲「服務器」錯誤而加載(根據5.0黑莓瀏覽器,POST數據發送太大或GET數據收到太大,以及6.0黑莓瀏覽器, 「請求的URL無法檢索 - 對不起,您嘗試上傳或下載的文件太大」)。奇怪的是,當連接到WiFi網絡時,該網站再次完美無瑕地開始工作。

我想知道如果我能夠確定以MB/KB發送和接收的PHP POST數據,那麼我可以儘可能地減少它。

我不知道這是Codeigniter問題還是Carrier問題,或者兩者兼而有之,因爲只有當我通過URL傳遞數據時纔會出現錯誤。例如

example.com/codeigniter/main - 好吧 example.com/codeigniter/main/post/131 - 繁榮,死亡。

是「codeigniter /」應用程序,「main /」控制器,「post /」方法和131的值。

我使用Codeigniter反應堆2.0.1,順便說一句。

+0

HTTP Headers的外觀如何? – drudge 2011-03-11 21:38:15

+0

@jnpcl現在我看到它們,HTTP標頭非常龐大。不是很大,但比我想象的要多。這是主要的GET HTTP Set_cookie:http://sharetext.org/SN4 - 我認爲這可能不是在CI中設置cookie的最佳方式(如果有另一個)。還有其他5個「Cookie」HTTP請求,如http://sharetext.org/SN5。雖然它只有73kb。這可能嗎? – AeroCross 2011-03-12 16:59:06

回答

0

如果您試圖測量請求的大小,$ _SERVER superglobal有一個屬性。

$size = (int)$_SERVER['CONTENT_LENGTH']; 

使用此代碼將您的帖子提交給終端並回顯它的值。

如果請求是通過POST方法發送的,則會將Content-length HTTP標頭的值分配給$ size。

+0

這確實回答了問題,但本身並沒有解決問題(因爲錯誤令人困惑 - 它表示可能POST太大或GET太大,但實際使用中都不存在)。感謝您的提示,但! – AeroCross 2011-03-12 16:53:13

+0

@AeroCross:我會猜測你在cookie中存儲的方式太多了。爲了兼容性(和理智),請將它保持在4KB以下。 – drudge 2011-03-12 17:40:53

+0

@jnpcl你猜錯了 - 我在cookie中只存儲了1.2 KB(並且你知道CI將很多東西存儲在用戶定義的數據旁邊)。問題是,從我測試過的那個長長的頭文件是幾個$ this-> session-> set_userdata()調用(總共4個)的結果。 Codeigniter似乎一遍又一遍覆蓋它爲每個$ this-> session-> set_userdata()調用保存的數據。在其他的GET請求中,只有一個正在顯示 - 實際的cookie。 – AeroCross 2011-03-12 18:06:20