php缓存技术原理详细说明与实例(1/15)

 更新时间:2016年11月25日 15:54  点击:2218

缓存技术:   
有些信息比方经常不变的,但是还是能变的信息放在缓存中以加快显示速度,这是很有价值的,所谓的缓存,通俗的理解就是一些保存在服务器端的共用信息.它是于服务器同生死的,我们在保存缓存的时候可以指定下次更新的时间的判断,比方要在5分钟更新一次,可以记录上次更新的时间,和当前时间比较,如果大于 5 分钟 ,读取数据库教程,更新换成,否则直接读取缓存数据,当然,缓存需要客户端用户激活的,只需一次.
ob_start()函数:打开输出缓冲区.
     函数格式 void ob_start(void)
     说明:当缓冲区激活时,所有来自php教程程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
flush:刷新缓冲区的内容,输出。
     函数格式:flush()
     说明:这个函数经常使用,效率很高。
ob_get_contents :返回内部缓冲区的内容。
     函数格式:string ob_get_contents(void)
     说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 false.
ob_get_length:返回内部缓冲区的长度。
     函数格式:int ob_get_length(void)
     说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活,则返回 false.
ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
     函数格式:void ob_end_clean(void)
     说明:这个函数不会输出内部缓冲区的内容而是把它删除
ob_end_flush:发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区
     函数格式:void ob_end_flush(void)
     说明:这个函数发送输出缓冲区的内容(如果有的话)
ob_implicit_flush:打开或关闭绝对刷新
     函数格式:void ob_implicit_flush ([int flag])
     说明:默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()   
二、文件写入:    

 

<?php

/**
la (3,5,8,11)
lb(2,6,8,9,11,15)
合并为lc,有序排列。
用php实现,不能用sort之类的函数!!!!
**/

class union {
    var $lista = array();
    var $listb = array();
    var $listc = array();
   
    function getlenght($arr) { //获得表长度
        return count($arr);
    }
   
    function getelement($arr, $n) { //获取表中第n个元素,返回
        return $e = $arr[$n] ? $arr[$n] : '';
    }
   
    function listinsert($arr, $e) { //表末尾插入元素
        $arr[] = $e;
        return $arr;
    }
   
 
}
$phpig = new union();
$lista = $phpig->lista = array(3, 5, 8, 11);
$listb = $phpig->listb = array(2, 6, 8, 9, 11, 15);
$listc = $phpig->listc;
$lena = $phpig->getlenght($lista); //取得表大小
$lenb = $phpig->getlenght($listb);
$i = $j = 0;
while($i < $lena && $j < $lenb) {
    $ea = $phpig->getelement($lista, $i);
    $eb = $phpig->getelement($listb, $j);
    if($ea <= $eb) {
        $listc = $phpig->listinsert($listc, $ea);
        ++$i;
    } else {
        $listc = $phpig->listinsert($listc, $eb);
        ++$j;
    }
}
while($i < $lena) {
    $ea = $phpig->getelement($lista, $i);
    $listc = $phpig->listinsert($listc, $ea);
    ++$i;
}
while($j < $lenb) {
    $eb = $phpig->getelement($listb, $j);
    $listc = $phpig->listinsert($listc, $eb);
    ++$j;
}

print_r($listc);
?>

/*
我有一个问题,要求从php教程代码的url。我需要调用一个服务,使用从我的php代码的查询字符串。如果我的浏览器中键入一个网址,它工作还算可以,但如果我使用文件获取,内容()来拨打电话,我得到:

 代码如下 复制代码
$query=file_get_contents('http://www.111cn.net');
echo($query);

可能出现问题有三种

一、php.ini 的allow_url_fopen选项是不是开着的?如果是off就不能访问了,把它变成on.
二、php.ini开启了安全模式
三、机器装了防火强

其它解决方法

*/

 

 代码如下 复制代码
$curl_handle=curl_init();
curl_setopt($curl_handle, curlopt_url,'http://www.111cn.net');
curl_setopt($curl_handle, curlopt_connecttimeout, 2);
curl_setopt($curl_handle, curlopt_returntransfer, 1);
curl_setopt($curl_handle, curlopt_useragent, 'your application name');
$query = curl_exec($curl_handle);
curl_close($curl_handle);

/*
setcookie()函数定义一个cookie被发送的http头的其余部分一起。像其他头,饼干之前,必须发送从你的脚本(这是一个协议限制输出)。这就需要你的地方调用这个函数之前,任何输出,包括<html>和<head>标签以及任何空格。

一旦饼干已经确定,他们可以访问下一页上加载了$ _cookie或$ http_cookie_vars数组。请注意,如超全局变量$ _cookie形式适用于php的4.1.0。 cookie的值也存在于$ _request数组。

 代码如下 复制代码
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

*/

 代码如下 复制代码

function makecookie($var, $value, $life = 0, $prefix = 0) //设置cookie
{
 global $cookiepre, $cookiedomain, $cookiepath, $timestamp, $_server;
 setcookie(($prefix ? $cookiepre : '').$var, $value,
 $life ? $timestamp + $life : 0, $cookiepath,
 $cookiedomain, $_server['server_port'] == 443 ? 1 : 0);
}

function clearcookies() //清除cookie
{
 global $uid, $username, $pw, $adminid;
 makecookie('auth', '', -86400 * 365);
 $uid = $adminid = 0;
 $username = $pw = '';
}

//实例

 代码如下 复制代码

makecookie('111','www.111cn.net');
//清除cookie
clearcookies();

//下面兴一个支持二级域名cookie函数吧。

function setcookielive($name, $value='', $expire=0, $path='', $domain='', $secure=false, $httponly=false) {
    //set a cookie as usual, but also add it to $_cookie so the current page load has access
    $_cookie[$name] = $value;
    return setcookie($name,$value,$expire,$path,$domain,$secure,$httponly);
}

//调用方法

 代码如下 复制代码

setcookielive('webab','111cn',time()+86000,'/','111cn.net');

//一入门级cookie设置方法

setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");

// after the page reloads, print them out
if (isset($_cookie['cookie'])) {
    foreach ($_cookie['cookie'] as $name => $value) {
        echo "$name : $value <br /> ";
    }

 代码如下 复制代码
function ihtmlspecialchars($string)
{
 if(is_array($string))
 {
  foreach($string as $key => $val)
  {
   $string[$key] = ihtmlspecialchars($val);
  }
 } else
 {
  $string = preg_replace('/&amp;((#(d{3,5}|x[a-fa-f0-9]{4})|[a-za-z][a-z0-9]{2,5});)/', '&\1',
  str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $string));
 }
 return $string;
}

//实例

 代码如下 复制代码

$str = '<a href="www.111cn.net">dfdfd</a>';
echo ihtmlspecialchars( $str );
echo '<br >';

//echo &lt;a href=&quot;www.111cn.net&quot;&gt;dfdfd&lt;/a&gt; 这样就可防止一些不安全因素了。

echo htmlspecialchars ($str );

//print &lt;a href=&quot;www.111cn.net&quot;&gt;dfdfd&lt;/a&gt;

/*
两个结果完全相同,所以个人觉得自php自带的函数高效于用户自定义函数
*/
?>

[!--infotagslink--]

相关文章

  • c#自带缓存使用方法 c#移除清理缓存

    这篇文章主要介绍了c#自带缓存使用方法,包括获取数据缓存、设置数据缓存、移除指定数据缓存等方法,需要的朋友可以参考下...2020-06-25
  • IDEA中的clean,清除项目缓存图文教程

    这篇文章主要介绍了IDEA中的clean,清除项目缓存图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-25
  • AngularJS实现Model缓存的方式

    这篇文章主要介绍了AngularJS实现Model缓存的方式,分享了多种AngularJS实现Model缓存的方法,感兴趣的小伙伴们可以参考一下...2016-02-05
  • iOS蓝牙设备名称缓存问题的解决方法

    这篇文章主要给大家介绍了关于iOS蓝牙设备名称缓存问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • Nodejs下DNS缓存问题浅析

    本文给大家一起探讨nodejs下dns的缓存问题,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧...2016-11-22
  • PHP的运行机制与原理(底层)

    说到php的运行机制还要先给大家介绍php的模块,PHP总共有三个模块:内核、Zend引擎、以及扩展层;PHP内核用来处理请求、文件流、错误处理等相关操作;Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;扩展层是一组...2015-11-24
  • @CacheEvict + redis实现批量删除缓存

    这篇文章主要介绍了@CacheEvict + redis实现批量删除缓存方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-12
  • vue项目中禁用浏览器缓存配置案例

    这篇文章主要介绍了vue项目中禁用浏览器缓存配置案例,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...2021-09-12
  • python怎么删除缓存文件

    在本篇文章里小编给大家整理的是一篇关于python删除缓存文件方法,需要的朋友们可以学习下。...2020-07-19
  • yii添删改查实例

    一、数据访问对象 (DAO)YiiDAO 基于 PHP Data Objects (PDO) 构建。它是一个为众多流行的DBMS提供统一数据访问的扩展,这些 DBMS 包括MySQL, PostgreSQL 等等。因此,要使用 Yii DAO,PDO 扩展和特定的 PDO 数据库驱动(例如...2015-11-24
  • IIS7、iis7.5中禁止缓存单个静态文件的配置方法

    这篇文章主要介绍了IIS7、iis7.5中禁止缓存单个静态文件的配置方法,需要的朋友可以参考下...2017-07-06
  • 快速理解MySQL中主键与外键的实例教程

    主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是 thread.php&#63;id=1 表示我要访问的是帖子...2015-11-24
  • c# 接口使用实例

    这篇文章主要介绍了c#接口使用的实例,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-17
  • java中Base64编码原理实例讲解

    这篇文章主要介绍了java中Base64编码原理实例讲解,文章讲解的很清晰,有对于这方面不太懂的同学可以研究下...2021-02-10
  • Vue中key的作用及原理详解

    本文主要介绍了Vue3中key的作用和工作原理,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-13
  • 强制页面不缓存的方法

    页面不缓存可以让我们有更新就立即更新出来用户不需要清除浏览器缓存或不停的按f5刷新了,这里整理了解一些关于页面不缓存的方法,具体的如下。 一,js,css,图片文件不...2016-09-20
  • SpringCache 分布式缓存的实现方法(规避redis解锁的问题)

    这篇文章主要介绍了SpringCache 分布式缓存的实现方法(规避redis解锁的问题),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-20
  • 安卓手机如何清理缓存

    小编给大家带来一篇关于安卓手机缓存怎么清理的问题解答,有需要的可以参考一下 &#8195;&#8195;安卓手机怎么清理缓存 android清除程序缓存的方法&#8195;&#8195;一,...2017-07-06
  • C#中的IEnumerable简介及简单实现实例

    这篇文章主要介绍了C#中的IEnumerable简介及简单实现实例,本文讲解了IEnumerable一些知识并给出了一个简单的实现,需要的朋友可以参考下...2020-06-25
  • C# URL短地址压缩算法及短网址原理解析

    这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下...2020-06-25