A. php 缓存方式有哪几种呢 都在什么情况下使用呢
PHP缓存技术 WEB程序获取信息的方式主要是查询数据库,当数据库不是很大的情况下不会有太大的问题.然而,随着网站的发展,数据库呈几何级数的方式增长的时候,就会出现瓶颈.于是PHP缓存技术诞生了.PHP缓存技术工作时,当程序查询数据的时候,会把相应的结果序列化后保存到文件中,以后同样的查询语句就可以不用直接查询数据库,而是从缓存文件中获得。这一改进使得程序运行速度得以太幅度提升.
目前应用PHP缓存技术比较流行的方法主要是Adodb+Smarty这样的黄金搭档.
PHP缓存技术工作原理:
首先看看adodb提供的数据缓存功能:
1<?php
2include('adodb.inc.php'); # load code common to ADOdb
3$ADODB_CACHE_DIR = '/usr/ADODB_cache';
4$conn = &ADONewConnection('mysql'); # create a connection
5$conn->PConnect(' ','userid','','agora');# connect to MySQL, agora db
6$sql = 'select CustomerName, CustomerID from customers';
7$rs = $conn->CacheExecute(15,$sql);
8?> 如上,每次查询数据的时候,会把相应的结果序列化后保存到文件中,以后同样的查询语句就可以不用直接查询数据库,而是从缓存文件中获得。
再来看看Smarty提供的页面缓存功能:
1<?php
2require('Smarty.class.php');
3$smarty = new Smarty;
4$smarty->caching = true;
5if(!$smarty->is_cached('index.tpl')) {
6 // No cache available, do variable assignments here.
7 $contents = get_database_contents();
8 $smarty->assign($contents);
9}
10$smarty->display('index.tpl');
11?>
12
如上,每次访问页面的时候,都会先检测相应的缓存是否存在,如果不存在,就连接数据库,得到数据,完成模板变量的赋值,显示页面,同时生成缓存文件,这样下次访问的时候缓存文件就发挥作用了,而不会再执行if块的数据查询语句了。当然,在实际使用中会有很多东西要考虑,比如,有效期的设置,缓存组的设置等等,具体可以查看Smarty手册中有关缓存(caching)的相关章节。
以上两个PHP流行组件缓存方式的侧重点是不同的,对于Adodb的缓存而言,它缓存的是数据,对于Smarty的缓存而言,它缓存的是页面。其他提供缓存功能的组件还有很多(如:PEAR::Cache_Lite等等),实际编程中使用哪个方案要具体情况具体分析,也可能会综合使用。
使用这些组件内置的缓存方案有一个很明显的好处是它们的实现对客户端而言都很透明。只要进行必要的设置(如:缓存时间,缓存目录等等)就可以了,而不用过多考虑实现缓存的细节问题,系统会根据设置自动管理缓存。但是其缺点也同样明显,因为每次请求仍然要用PHP解析一遍,效率和纯静态相比还是大打折扣,在大的PV面前还是不能满足要求,在这种情况下,仅仅做动态缓存就不够了,必须实现静态缓存。
PHP,一门最近几年兴起的web设计脚本语言,由于它的强大和可伸缩性,近几年来得到长足的发展,php相比传统的asp网站,在速度上有绝对的优势,想mssql转6万条数据php如需要40秒,asp不下2分钟.但是,由于网站的数据越来越多,我们渴求能更快速的调用数据,不必要每次都从数据库掉,我们可以从其他的地方,比方一个文件,或者某个内存地址,这就是php的缓存技术,也就是Cache技术.
B. 请问一个PHP 文件缓存问题
1)会出现读脏数据的情况。
2)可以考虑自己实现一个简单的读锁机制。
顺便问一下楼主缓存用的什么?redis?memcache?
C. php 缓存怎么写
PHP数据缓存常用页面缓存 静态缓存
php页面缓存主要用到的是ob系列函数,如ob_start(),ob_end_flush(),ob_get_contents()
静态缓存是指静态化,直接生成HTML或XML等文本文件,有更新的时候重生成一次,适合于不太变化的页面
给你个页面缓存的例子
function page_cache($ttl = 0)
{
$ttl = $ttl ? $ttl : PAGE_TTL;//缓存时间,默认3600s
$contents = ob_get_contents();//从缓存中获取内容
$contents = "<!--page_ttl:".(time() + $ttl)."-->n".$contents;
//加上自定义头部:过期时间=生成时间+缓存时间
file_put_contents(PAGE_FILE, $contents);//写入缓存文件中
ob_end_flush();//释放缓存
}
D. PHP缓存问题
应该不是缓存的事情,这个试试:onMouseOver="javascript:showPage('0','helt');"
E. php 数据缓存
这个原本就是比较麻烦的,
一种方法就是按照我现在做的,定期更新数据,给缓存数据一个生命周期。
第二种方式也是比较实在的就是在更新系统中加入对缓存的作废机制,这样就可以很好的解决了数据更新不及时的问题。
考虑到你公司的数据非常庞大,故第一种方法可能更加有效一些,可以把网页中所需要的数据采用后台程序定期生成的方式来实现,这样可以很好的提高浏览效率,而且也不会影响到第一次浏览的速度。
F. 关于PHP销毁缓存里的变量并且重新载入页面的操作
这个问题我 以前也碰到过,你可以试试用另外几种跳转方法比如
1 header 这个我就不说了
2 html标记的跳转
(1) 在表单的action那改 如 action='要跳转页面名'
(2)在按键里面设置,比如你填好的页面会按个button 可以这样
<?php
echo"<input type='button' name='bt' value='页面跳转' onclick='loction=\"要跳转页面名"\'>";
?>
3使用客户端脚本跳转 比如
<?php
echo"<script>if(confirm('页面跳转?'))";
echo"windows.location='要跳转页面名'</script>";
>
我上次好像就是用第3种就好了你看看行不行,不行的话再问我
G. PHP缓存怎么弄的
楼上已经说对了,php下缓存都写进文件,用的是ob_start函数系列(自己网络下),用的时候包含即可。给你个例子————
<?php
//这里写段代码,判断缓存是否存在,其实就是判断a.html文件存不存在
//如果缓存存在,直接include 包含即可,然后用 exit 退出
//否则执行下面代码
ob_start();//缓存开始
echo 'hello,world!';
$content = ob_get_clean();//获取缓存内容,然后清空缓存
$fp = fopen('a.html', 'w');
//然后fput函数写入$content的内容到文件,你应该懂的
~~~~~~~不懂追问哦,很高兴能帮助你~~
H. php如何缓存一个变量在内存中,要求在不同用户的多次请求中都有效。
memcache,用于在内存中缓存数据。 针对所有用户
I. 关于php做缓存的原理
差不多吧,但是你把存放在模板中的文件删除后,会慢很多,因为它要重新生成,那是很慢的,后面再访问的时候就快多了
J. PHP 能将数据入浏览器缓存吗如果能求讲解!
cookie
数据量小,用于身份识别
Local Storage
可存储大量数据,具体可以网络搜索一下相关介绍及使用
调用限制比较严格,域名,路径限制
其它存储方式根据浏览器不同差异比较大