php+ajax级联菜单[无刷新级联菜单]
<?php
header("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码
require_once(dirname(__FILE__)."/include/config_base.php");
require_once(dirname(__FILE__)."/include/inc_type.php");
require_once(dirname(__FILE__)."/include/inc_cache.php");
$fatherid="";
$fatherid=$_GET['fatherid'];
if(!empty($fatherid)){
if(!file_exists('/cache/sun_'.$fatherid.'_cache.txt')){
$ty = new Type(0);
$typeOptions = $ty->GetSmallOption($fatherid);
if(!empty($typeOptions)){
cache_write('/cache/sun_'.$fatherid.'_cache.txt', $typeOptions);
echo "<select name='sunid' style='width:200'>rn";
echo $typeOptions;
echo "</select>";
$tl->Close();
}
}else{
$typeOptions=cache_get('/cache/sun_'.$fatherid.'_cache.txt');
echo "<select name='sunid' style='width:200'>rn";
echo $typeOptions;
echo "</select>";
}
}
?>
<div id="BigType">
</div>
<div id="SmallType">
</div>
<script language="JavaScript" src="prototype-1.6.0.2.js"></script>
<script>
function GetBigType (){
var url='GetBigType.php';
var pars='pid=1';
var myAjax=new Ajax.Updater('BigType', url, {method:'get', parameters:pars});
}
GetBigType ();
function GetSmallType(){
var fatherid=$F('fatherid');
var url=' GetSmallType.php';
var pars='fatherid='+fatherid;
var myAjax =new Ajax.Updater('SmallType', url, {method:'get', parameters:pars});
}
</script>
<?php
header("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码
require_once(dirname(__FILE__)."/include/config_base.php");
require_once(dirname(__FILE__)."/include/inc_type.php");
require_once(dirname(__FILE__)."/include/inc_cache.php");
$pid="";
$pid=$_GET['pid'];
if($pid==1){
if(!file_exists('../cache/bigtype.cache.txt')){
$ty = new Type(0);
$typeOptions = $ty->GetBigOption();
cache_write('/cache/bigtype.cache.txt', $typeOptions);
echo "<select name='fatherid' onChange='GetSmallType();' style='width:200;'>rn";
echo "<option value='0' selected>--不限栏目--</option>rn";
echo $typeOptions;
echo "</select>";
$ty->Close();
}else{
$typeOptions=cache_get('/cache/bigtype.cache.txt');
echo "<select name='fatherid' onChange='GetSmallType ();' style='width:200;'>rn";
echo "<option value='0' selected>--不限栏目--</option>rn";
echo $typeOptions;
echo "</select>";
}
}
?>
本文章作者主要是用到 php 里面的数据库缓存,php缓存,cache_write,var_export功能对数据进行缓存操作了,觉得写得很不错。PHP 中的数据库缓存原理
如果后台应用接收到浏览器端的查询请求后,每次都与数据库连接读取数据,势必增加数据库的负担。而往往有大量的请求是重复的,我们可以把这些重复的信息采用缓存技术保存下来,重复使用,这样,在某些情况下可以大大提高程序的性能。
1,缓存函数
cache_write函数接受$string参数,写到$file文件中。注意var_export函数,作用是:
此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。
这些参数可以是数组或常量,而这些数组或常量通常为从数据库中取出的记录,或非序列化(unserialize)对象后得到的数据。这些都可以缓存到本地的文本文件中。
cache_write函数很简单,需要读取数据时,先判断缓存是否存在,存在的话就不去连接数据库取数据,而是直接读出缓存的文本文件,直接产生了数组或常量等类型的数据,可以直接使用。
[php]
<?php
//文件名func.inc.php
define("CACHEDIR", "./"); //定义缓存文件夹
function cache_write($file, $string, $type = 'array')
{
if(is_array($string))
{
$type = strtolower($type);
if($type == 'array')
{
$string = "<?phpn return ".var_export($string,TRUE).";n?>";
}
elseif($type == 'constant')
{
$data='';
foreach($string as $key => $value)
$data .= "define('".strtoupper($key)."','".addslashes($value)."');n";
$string = "<?phpn".$data."n?>";
}
}
$strlen = file_put_contents(CACHEDIR.$file, $string);
chmod(CACHEDIR.$file, 0777);
return $strlen;
}
function cache_read($file)
{
$cachefile = CACHEDIR.$file;
if(!file_exists($cachefile))
return array();
return include $cachefile;
}
function cache_delete($file)
{
return @unlink(CACHEDIR.$file);
}
if(!function_exists('file_put_contents'))
{
define('FILE_APPEND', 8);
function file_put_contents($file, $string, $append = '')
{
$mode = $append == '' ? 'wb' : 'ab';
$fp = @fopen($file, $mode) or exit("Can not open file $file !");
flock($fp, LOCK_EX);
$stringlen = @fwrite($fp, $string);
flock($fp, LOCK_UN);
@fclose($fp);
return $stringlen;
}
}
?>
[/php]
2,写缓存和读取的示例
[php]
<?php
//写缓存
include "func.inc.php";
$arr = array (1, 2, array ("a", "b", "c"));
cache_write('test.cache.php', $arr); //缓存文件 test.cache.php
?>
[/php]
[php]
<?php
//读缓存
include "func.inc.php";
$var = cache_read('test.cache.php');
print_r($new_var);
print_r($var);
foreach ($var as $k=>$v)
{
echo '<br>' . $k . '=' . $v ;
}
?>
[/php]
3,性能分析
缓存之所以能提高性能,是通过本地磁盘空间换网络存取速度和数据库服务器存取时间的结果。
a = 本机读写时间
b = 本机占用空间
c = 网络传输时间
d = 数据库服务器磁盘时间
可以估算到,如果数据库与应用程序存在于一台机器时,主要是 a 与 d 的比较,效果可能并不明显,甚至还要糟一点。因为数据库系统针对磁盘存取经过了精心优化,是操作系统对文件的普通读写无法相比的。
如果本机的磁盘存取效率不佳,有时从局域网的数据库上取得数据,可能比从本机的缓存取数据还快,这种情况比较少见。而随着请求数量的大量增加,缓存的效果就会明显起来。
觉得很不错,所以推荐一下。
代码如下 | 复制代码 |
<?php <?php // 连接FTP服务器www.111cn.net/ // 上传文件 // 关闭FTP连接 |
转载请注明www.111cn.net/phper/php.html
本文章来讲一下php ftp_delete删除文件 与ftp_size获取文件的大小,下面我们分别来看看二个函数的实例吧。<?php
$file = 'public_html/old.txt';
// 连接FTP服务器
$conn_id = ftp_connect($ftp_server);
// 验证用户名和密码
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// 删除指定文件
if (ftp_delete($conn_id, $file)) {
echo "$file 文件删除成功 ";
} else {
echo "删除 $file 文件失败 ";
}
// 关闭FTP连接www.111cn.net
ftp_close($conn_id);
?>
<?php
$file = 'somefile.txt';
// 连接FTP服务器
$conn_id = ftp_connect($ftp_server);
//验证用户名和密码
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
//获取指定文件的大小www.111cn.net
$res = ftp_size($conn_id, $file);
if ($res != -1) {
echo " $file 文件大小为 $res字节";
} else {
echo "获取远程文件大小失败";
}
//关闭FTP连接
ftp_close($conn_id);
?>
转载的朋友请注明来自www.111cn.net
本教程是讲一个简单的用php ftp功能做文件上传下载功能哦,好了下面我们来看看简单的实例教程吧。本教程是讲一个简单的用php ftp功能做文件上传下载功能哦,好了下面我们来看看简单的实例教程吧。
<?php
// 开始
$ret = ftp_nb_get ($my_connection, "test", "README", FTP_BINARY,
filesize("test"));
// 或: $ret = ftp_nb_get ($my_connection, "test", "README",
// FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {
// 可以插入其它代码
echo ".";
// 继续传送...
$ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
echo "下载出错...";
exit(1);
}
?>
转载请注明:www.111cn.net/phper/php.html
相关文章
- 本文实例讲述了jQuery实现非常实用漂亮的select下拉菜单选择效果。分享给大家供大家参考,具体如下:先来看如下运行效果截图:在线演示地址如下:http://demo.jb51.net/js/2015/js-select-chose-style-menu-codes/具体代码如...2015-11-08
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
php无刷新利用iframe实现页面无刷新上传文件(1/2)
利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25- 本文实例讲述了jQuery实现有动画淡出效果的二级折叠菜单代码。分享给大家供大家参考,具体如下:这里介绍jQuery实现有动画淡出效果的二级折叠菜单代码,相当不错,因考虑功能的实现,所以没有怎么美化,不过这样也好,可以给大家更...2015-10-21
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
这篇文章将使用jQuery,并结合PHP,将Fckeditor发布的内容进行分页,并且实现无刷新切换页面。 本文假设你是WEB开发人员,掌握了jQuery和PHP相关知识,并且熟知Fckeditor的配置和使用。...2015-10-23- 这篇文章主要为大家详细介绍了jQuery实现下拉菜单滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-09
- 这篇文章主要介绍了解决vue刷新页面以后丢失store的数据问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
- 本文实例讲述了jQuery实现可关闭固定于底(顶)部的工具条菜单效果。分享给大家供大家参考,具体如下:这是一款可关闭始终在页面底部的工具条菜单,浮动在页面顶部的大家见的比较多了,本款从形式上来说与其它的没什么差别,只是浮...2015-11-08
- 二级联动下拉菜单选择应用在在很多地方,比如说省市下拉联动,商品大小类下拉选择联动。本文将通过实例讲解使用jQuery+PHP+MySQL来实现大小分类二级下拉联动效果。 实现效果:当选择大类时,小类下拉框里的选项内容也随着改...2015-10-30
- 这篇文章主要介绍了解决vuex数据页面刷新后初始化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26
- 由于业务需要,要求实现树形菜单,且菜单数据由后台返回,下面这篇文章主要给大家介绍了关于js如何构造elementUI树状菜单的数据结构的相关资料,需要的朋友可以参考下...2021-05-13
- 本文主要对介绍利用Vue.js 的递归组件,实现了一个最基本的树形菜单。具有很好的参考价值,下面就跟着小编一起来看下吧...2017-01-09
- 这篇文章主要介绍了java后台实现js关闭本页面,父页面指定跳转或刷新操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-16
- 这是一款精美的多级下拉菜单美化,可以完美替代“select”来实现下拉菜单的效果。而且支持多级菜单,有加载等待效果,有层级分类展示。复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "ht...2015-03-15
- 这篇文章主要介绍了基于jquery实现表格无刷新分页,功能实现了前端排序功能,增加了前端搜索功能,感兴趣的小伙伴们可以参考一下...2016-01-08
- 本文就是和大家分享一款由php结合ajax实现的无刷新留言板,先给大家看一下最后的效果图:数据库连接代码如下: <?php$conn = @mysql_connect("localhost","root","root") or die ("MySql连接错误");mysql_select_db("d...2015-10-30
- 这篇文章主要为大家详细介绍了jquery插件实现悬浮的菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-23
- 这篇文章主要介绍了Vue 中获取当前时间并实时刷新,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-13
- 这篇文章主要介绍了vue实现在进行增删改操作后刷新页面,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-05