首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许在Browscap中耗尽内存大小

允许在Browscap中耗尽内存大小
EN

Stack Overflow用户
提问于 2014-07-15 10:12:47
回答 2查看 1.8K关注 0票数 0

我下载了库browscap 2.0版本,并添加了以下代码

代码语言:javascript
复制
$browscap = new Browscap('/tmp');
$browscap->doAutoUpdate = false;
$current_browser = $browscap->getBrowser();

问题是,当我试图获取有关当前浏览器的信息时,会出现一个错误

第677行....phpbrowscap-2.0/src/phpbrowscap/Browscap.php中允许内存大小为268435456字节(尝试分配281个字节)

我不想增加内存,因为我的代码在每个加载页上都会执行,因此我将失去性能。所以我试着调试代码,我注意到他正在检查很多浏览器。$tmp_user_agents中有很多值,他正在循环这个变量。

是否可以在不花费太多时间的情况下获得这个库的功能?还是说我错过了什么

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-15 13:44:46

嗯,Browscap有一个非常庞大的数据库,在每一个页面上加载这个数据库(并对其进行迭代)当然不是很有效。我在他们网站上下载的"ini“文件有7.5MB!PHP内存不足很容易理解。在这种情况下,我不建议使用这个库。

我只检查了他们的网站和资源文件--而不是代码--但似乎他们只是寻找用户代理字符串来验证浏览器(顺便说一句,这很容易伪造)。

您是否看过这个PHP函数:http://php.net/manual/de/function.get-browser.php为您的需要提供了足够的输出?

票数 0
EN

Stack Overflow用户

发布于 2015-06-25 20:13:49

我知道这对聚会来说有点晚了,但是使用它的最有效的方法是每天在您的服务器上运行一次cron作业来更新缓存,然后在代码中使它在调用browscap时更新缓存。

在站点页面中,运行以下代码:

代码语言:javascript
复制
$browscap = new Browscap($cacheDir);
$browscap->doAutoUpdate = false;
$current_browser = $browscap->getBrowser();

在您的服务器上,创建这个脚本(我称之为updateBrowscap.php),我的脚本与browscap.php位于同一个文件夹中,缓存文件夹是它的一个子文件夹。

代码语言:javascript
复制
ini_set('memory_limit','1024M');    // allow 1GB for this script
set_time_limit(300);            // change to 5 minutes for this script

// CREATE THIS CRON SCRIPT TO RUN ONCE PER DAY
// /usr/bin/php -q [full-path-to-this-file]/updateBrowscap.php > [full-path-to-this-file]/backup.log 2>&1

// Loads the class
require 'Browscap.php';

// The Browscap class is in the phpbrowscap namespace, so import it
use phpbrowscap\Browscap;

echo 'started: '.date("d-m-Y H:i:s", time()).PHP_EOL;

$path = dirname(__FILE__).'/cache';

$bc = new Browscap($path);
$bc->updateCache();

echo 'finished: '.date("d-m-Y H:i:s", time()).PHP_EOL;

我的脚本不会使用共享主机允许我分配的512 My的最大值来运行,所以我已经在这个脚本中手动将它设置为1024 My。

一旦我解决了内存问题,我就遇到了一个超时问题,所以我已经将这个脚本的超时时间从30秒提高到了5分。

我每天凌晨3点左右跑一次

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24755517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档