0

我一直在测试 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 ,是否有计划让这个函数占用更少的内存来进行检查?现在,我不得不删除这个功能,因为它只是给我的应用程序增加了太多的内存。

4

2 回答 2

1

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

如果这不可能,代理类允许您模拟此功能,并获取 browscap 文件本身。正如 Jelmer 所说,您可以通过更改配置的 URL 将此文件替换为轻型版本。

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

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

于 2011-07-19T17:12:57.437 回答
1

这并不是提出如此具体的 Fuel 问题的最佳地点,我们为此设立了论坛,如果您认为某事存在错误,您可以在 Github 上发布问题。

话虽如此,您可以将 agent.php 配置文件复制到 app/config 并对其进行编辑以使用“http://browsers.garykeith.com/stream.asp?Lite_PHP_BrowsCapINI”而不是“http://browsers.garykeith”。 com/stream.asp?BrowsCapINI",这可以为您节省 50% 以上的文件大小。但它识别的浏览器较少。

这是 WanWizard 写的,所以如果你想确定的话,你必须在论坛上问他。但据我所知,这是了解用户浏览器的最可靠方法。不过,我会建议 WanWizard 将 lite 版本设为默认版本。

于 2011-07-19T09:46:17.320 回答