❶ php可以存储数组吗
可以的。
先用serialize序列化数组,再存入COOKIE,读出来时用unserialize得到原来的数组
代码:
//存入
$arr = array(1,2,3);
$arr_str = serialize($arr);
setcookie("a",$arr_str);
//取出
$arr_str = $_COOKIE['a'];
$arr = unserialize($arr_str);
2. 设定多键值cookie,注意必须给键值
$arr = array(1,2,3);
setcookie("a[0]", $arr[0]);
setcookie("a[1]", $arr[1]);
setcookie("a[2]", $arr[2]); 结果:数组所有元素都存到了。
数组长度 :3
Array ( [0] => 1 [1] => 2 [2] => 3 )
❷ PHP 操作大对象 数组如何节省内存
20M你要读到数组中,如果你不清楚要用到里面哪些数据,并且你的数据比较规律的话,你可以把这20M切开不同个小文件,再根据你在程序中要用的数据来做判断是载入哪个文件,比如你这20M文件都有一个索引id,1,2,3,4,5....你可以把这20M文件的数据id为1-1000的存到一个文件里,1001-2000存到另一个文件里,你在用时根据要用到的id判断载入哪个文件,这只是个思路,具体要看你的数据是个什么样的,能不能满足切开放的条件
❸ php查询数据库的前5条数据,用数组存起来
为了便于随时echo,存为字符串最好,一般的代码如下:
$sql='select * from xxx order by xxid desc limit 5';//limit 5表示只取5个,order by xxxid desc表示按xxxid降序排列,可以显示最新的5个
$res=mysql_query($sql);
$str5='';//保存的结果
while($row=mysql_fetch_array($res)) $str5.=$row[0].‘<br>';//可能你需要修改这一句,控制显示格式
mysql_free_result($res);
以后你就可以随时echo $str5了。
❹ php 数组占用内存太大
我们这前面的php高效写法提到,尽量不要复制变量,特别是数组,一般来说php数组的内存利用率只有1/10,也就是说,一个在c语言国面100M内存的数组,在php里面就是1G,
❺ thinkphp 数据缓存是否校验缓存是什么意思
在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,直接采用S方法即可,例如:
缓存初始化
// 缓存初始化
S(array('type'=>'xcache','expire'=>60));
缓存初始化可以支持的参数根据不同的缓存方式有所区别,常用的参数是:
参数 描述
expire 缓存有效期(时间为秒)
prefix 缓存标识前缀
type 缓存类型
系统目前已经支持的缓存类型包括:Apachenote、Apc、Db、Eaccelerator、File、Memcache、Redis、Shmop、Sqlite、Wincache和Xcache。
如果S方法不传入type参数初始化的话,则读取配置文件中设置的DATA_CACHE_TYPE参数值作为默认类型。同样的道理,prefix参数如果没有传入会读取配置文件的DATA_CACHE_PREFIX参数值,expire参数没有传入则读取DATA_CACHE_TIME配置值作为默认。
有些缓存方式会有一些自身特殊的参数,例如Memcache缓存,还需要配置其他的参数:
S(array(
'type'=>'memcache',
'host'=>'192.168.1.10',
'port'=>'11211',
'prefix'=>'think',
'expire'=>60)
);
对于全局的缓存方式,一般我们建议添加prefix(缓存前缀)参数用以区分不同的应用,以免混淆。
缓存设置
// 设置缓存
S('name',$value);
会按照缓存初始化时候的参数进行缓存数据,也可以在缓存设置的时候改变参数,例如:
// 缓存数据300秒
S('name',$value,300);
甚至改变之前的缓存方式或者更多的参数:
// 采用文件方式缓存数据300秒
S('name',$value,array('type'=>'file','expire'=>300));
如果你在缓存设置的时候采用上面的数组方式传入参数的话,会影响到后面的缓存存取。
缓存读取
// 读取缓存
$value = S('name');
缓存读取的是前面缓存设置的值,这个值会受缓存初始化或者缓存设置的时候传入的参数影响。 如果缓存标识不存在或者已经过期,则返回false,否则返回缓存值。
缓存删除
// 删除缓存
S('name',null);
删除缓存标识为name的缓存数据。
对象方式操作缓存
我们可以采用对象方式操作缓存,例如:
// 初始化缓存
$cache = S(array('type'=>'xcache','prefix'=>'think','expire'=>600));
$cache->name = 'value'; // 设置缓存
$value = $cache->name; // 获取缓存
unset($cache->name); // 删除缓存
如果你设置了缓存前缀的话,对应的缓存操作只是对应该缓存前缀标识的,不会影响其他的缓存。
关于文件缓存方式的安全机制
如果你使用的是文件方式的缓存机制,那么可以设置DATA_CACHE_KEY参数,避免缓存文件名被猜测到,例如:
'DATA_CACHE_KEY'=>'think'
缓存队列
数据缓存可以支持缓存队列,简单的说就是可以限制缓存的数量,只需要在初始化的时候指定length参数:
S(array('type'=>'xcache','length'=>100,'expire'=>60));
设置了length参数后,系统只会缓存最近的100条缓存数据。
❻ php缓存二维数组
你要缓存到哪? 你的二维数组有多大? 缓存到服务器 你可以用 redis memache 等。 如果小的花 直接写cookie 。
❼ php 数组建立缓存,加快访问速度
可以考虑采用数据缓存,例如将数据缓存在memcache/redis 中,使用的时候 直接从缓存里读取,缓存里不存在的时候,自动读取数据库数据,更新到缓存中,缓存设置自动过期时间(或自动更新数据),这样可以减轻DB的压力。
❽ php数组累加速度很慢
将数据存在内存。
采用数据缓存,使用的时候直接从缓存里读取,缓存里不存在的时候,自动读取数据库数据,更新到缓存中,缓存设置自动更新数据。
PHP数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字成为数组名,编号成为下标。
❾ php用redis缓存和用数组缓存的区别
redis或者memcache比较正规,用文件是权宜之计,不同之处是文件慢,下次打开还有,redis要开通存储功能才有。
另外文件可以存放到内存里面,/run/shm下面,或者/dev/shm下面。这样速度也很快
❿ thinkphp 静态缓存的设置方法,怎么设置thinkphp静态页
在配置文件Conf\config.php的array()中加上:
Php代码
1
'HTML_CACHE_ON'
=>
true,//开启静态缓存
2
'HTML_PATH'
=>
'__APP__/html',//静态缓存文件目录,HTML_PATH可任意设置,此处设为当前项目下新建的html目录
静态规则定义:
ThinkPHP官方手册写道
静态规则的定义有三种方式:
Return
Array(
‘ActionName’=>array(‘静态规则’,’静态缓存有效期’,’附加规则’),
//第一种
‘MoleName:ActionName’=>array(‘静态规则’,’静态缓存有效期’,’附加规则’),//第二种
‘*’=>array(‘静态规则’,’静态缓存有效期’,’附加规则’),//第三种
…更多操作的静态规则
)
第一种是定义全局的操作静态规则,例如定义所有的read操作的静态规则为:'read'=>array('{id}','60')
其中,
{id}
表示取
$_GET[‘id’]
为静态缓存文件名,第二个参数表示缓存
60
秒。
第二种是定义某个模块的操作的静态规则,例如,我们需要定义
Blog
模块的
read
操作进行静态缓存
‘Blog:read’=>array(‘{id}’,-1)。
第三种方式是定义全局的静态缓存规则,这个属于特殊情况下的使用,任何模块的操作都适用,例如
‘*’=>array(‘{$_SERVER.REQUEST_URI|md5}’),
根据当前的
URL
进行缓存。