2011-07-18 21 views
0

我一直在測試IS_MOBILE():FuelPHP - 代理:: IS_MOBILE()內存查詢

if (Agent::is_mobile()) 
{ 
    $content = View::factory('mobile\viewname'); 
} 
else 
{ 
    $content = View::factory('standard\viewname'); 
} 

PHP探查報告它佔用2.25MB(減去不使用IS_MOBILE()的應用功能之後)返回一個對或錯。

我的browscap.cache文件大小是433KB,有沒有計劃讓這個函數佔用較少的內存來做它的檢查?現在,我不得不刪除這個功能,因爲它只是給我的應用增加了太多的內存。

回答

1

最好的解決方案是配置PHP使用browscap文件,通過php.ini(http://www.php.net/manual/en/misc.configuration.php#ini.browscap),這將允許代理類使用get_browser()。

如果這不可行,Agent類允許您模擬此函數並獲取browscap文件本身。正如Jelmer所說,您可以通過更改配置的URL來將該文件替換爲輕型版本。

但是,默認情況下,該文件每週只讀取一次。獲取它在本地解析,優化和緩存之後。爲了能夠進行查找,需要加載此緩存文件,這可以解釋您看到的內存使用情況。它不保存在內存中,所以如果你檢查memory_get_peak_usage(),你應該只看到內存使用情況。

查找的結果也被緩存,所以下一次瀏覽器出現時,信息將從緩存中檢索出來,並且browscap緩存不會被加載。

1

這不是最好的地方來問這樣一個具體的燃料問題,我們有這個原因的論壇,你可以在Github上發佈問題,如果你考慮一些錯誤。也就是說,您可以將agents.php配置文件複製到app/config並對其進行編輯以使用「http://browsers.garykeith.com/stream.asp?Lite_PHP_BrowsCapINI」而不是「http://」 browsers.garykeith.com/stream.asp?BrowsCapINI「,這爲您節省了50%以上的文件大小。它雖然識別較少的瀏覽器。

這是由WanWizard編寫的,所以如果你想知道肯定的話,你必須在論壇上問他。但據我所知,這是瞭解更多關於用戶瀏覽器的最可靠的方法。我會建議WanWizard將lite版本作爲默認版本。