FuelPHP - Agent :: is_mobile()内存查询

时间:2011-07-18 15:44:07

标签: fuelphp

我一直在测试is_mobile():

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

PHP分析器报告它占用2.25MB(在应用中减去不使用is_mobile()函数后)返回true或false。

我的browscap.cache文件大小是433KB,是否有计划让这个功能占用更少的内存来进行检查?现在,我不得不删除这个功能,因为它只是为我的应用添加了太多内存。

2 个答案:

答案 0 :(得分: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版本作为默认版本。

答案 1 :(得分:1)

最好的解决方案是配置PHP以使用browscap文件,通过php.ini(http://www.php.net/manual/en/misc.configuration.php#ini.browscap),这将允许Agent类使用get_browser()。

如果不可能,Agent类允许您模拟此函数,并获取browscap文件本身。正如Jelmer所说,您可以通过更改配置的URL来替换此文件。

但是,默认情况下,此文件仅每周提取一次。获取后,它在本地解析,优化和缓存。为了能够进行查找,需要加载此缓存文件,这可以解释您看到的内存使用情况。它没有保存在内存中,所以如果你检查memory_get_peak_usage(),你应该只看到内存使用情况。

查询的结果也会被缓存,因此下次出现相同的浏览器时,将从缓存中检索信息,并且不会加载browscap缓存。