php中flush()和ob_flush(),ob_end_flush()用法与区别
首先来说说buffer,它是一个内存地址空间,为4096(1kb)【在php.ini配置文件中找到output_buffering配 置】,php有php output_buffering机制,php代码在执行的时候,并不是立即将内容输出,而是想将echo/print内容输出到buffer,buffer满的时候才会将数据交给系统内核交由tcp传给浏览器显示,当开启php php output_buffering机制(默认是开启的,可以通过ob_start()函数开启)后,只有当php buffer中的数据达到了设置值,才会将buffer中 的数据发送给浏览器。但是浏览器也是有缓存的,一些版本的浏览当数据达到256字节的时候才输出内容,
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()
flush()可以将等待输出的内容立即发送到客户端,而ob_flush()只有等待到buffer满的时候才输出,可以通过下面一个简单的php实例来验证下:
实例
代码如下 | 复制代码 |
<?php |
代码如下 | 复制代码 |
/* Authentication type and info */ |
比如MySQL的端口设置为3308,可以把配置文件设置为:$cfg['Servers'][$i]['port'] = ’3308′;
生成静态页面是php中来减少服务器负载与seo网站优化一个不错的选择,所以php生成静态页面功能是几乎所有php程序员必须了解并掌握的一个知识点,下面我来给大家介绍php生成静态页面原理分析吧,有需要了解的朋友可进入参考。生成html原理分析
我们把要生成的标签写成一个模板文件,然后再利用php读取把指定标签替换成我们要替换 内容就可以了,现在主流的dedecms系统也是这么做的
生成静态页面代码。
模板即尚未填充内容html文件。例如:
代码如下 | 复制代码 |
temp.html <HTML> <TITLE>{ title }</TITLE> <BODY> this is a { file } fileArray;s templets </BODY> <?php $title = "拓迈国际测试模板"; $file = "TwoMax Inter test templet,<br>author:Matrix@Two_Max"; $fp = fopen ("temp.html","r"); $content = fread ($fp,filesize ("temp.html")); $content .= str_replace ("{ file }",$file,$content); $content .= str_replace ("{ title }",$title,$content); echo $content; ?> |
这样一个超简单的php生成静态页面的功能就实现了,但实现应用中这个不实用的,下面我介绍一个从数据库到生成实例。
1.创建测试数据库test,建立user表如下(自己插入几条测试数据库):
代码如下 | 复制代码 |
|
2.建立连接数据文件conn.php
代码如下 | 复制代码 |
<?php $dsn = "mysql:host=localhost;dbname=test;"; $user = "root"; $password = ""; try{ $dbh = new PDO($dsn,$user,$password); }catch(PDOException $e){ echo "连接失败".$e->getMessage(); } ?> |
3.显示新闻列表(news.php),注意,其连接为静态html连接,这时还没生成,当然链接打不开:
代码如下 | 复制代码 |
<meta http-equiv="content-type" content="text/html;charset=utf-8" /> <a href="add.php">添加文章</a> <hr> <?php require_once "conn.php"; $sql = "select * from news"; foreach($dbh->query($sql) as $row){ echo "<a href='news_{$row['id']}.html'>{$row['title']}</a>----<a href='add.php?id={$row['id']}'>修改文章</a><br>"; } ?> |
4.添加修改文章页面:
代码如下 | 复制代码 |
<meta http-equiv="content-type" content="text/html;charset=utf-8" /> <?php //获取修改的内容 if($_GET['id']){ require_once "conn.php"; $sql = "select * from news where id={$_GET['id']}"; $res = $dbh->query($sql)->fetch(); } ?> <form action="action.php" method="post"> 标题:<input type="text" name="title" value="<?=@$res['title']?>"/><br/> 内容:<textarea name="content" col=40 row=4><?=@$res['content']?></textarea><br/> <input type="hidden" name="id" value="<?=$_GET['id']?>" /> <input type="submit" name="submit" value="<?php echo $_GET['id'] ? '修改' : '添加'?>" /> </form> |
5.用于生成静态文件的页面模板template.html
代码如下 | 复制代码 |
|
6.action.php当然是用来生成和更新静态文件的:
代码如下 | 复制代码 |
|
这样一个完整生php生成静态页面的系统就完成了。
静态变量
动态变量当函数执行完之后,其存储空间会自动释放。而静态变量则当函数执行完后,存储空间仍然存储其变量。如果想利用函数的变量结果在进行计算,就需要将变量设置为静态变量。
php静态变量的设置方法是在变量前加”static”符号。
实例:
代码如下 | 复制代码 |
<?php |
动态变量
当我们定义了一个变量,就相当于在服务器申请了一个存储空间。动态变量即值不断变化的量,特点是当函数运行完成后,其变量存储空间的值就会自动释放。就比如货车拉货,运到目的地后就卸货,然后返回在拉。
实例:
代码如下 | 复制代码 |
<?php |
全局变量
前面学习了局部变量,其值只在一定范围内有效,如果要实现跨域调用,则要用到全局变量。
php定义全局变量:全局变量的声明只要在变量名前加上”global”就可以了,定义了全局变量之后,主程序的变量可以被函数内部调用,同样地函数内的变量也可以被主程序所用。
实例1:
代码如下 | 复制代码 |
<?php |
局部变量
在php语言中,变量都有一定的作用范围,一旦离开,变量将失去意义或者发生改变,称之为变量作用域。就好象局域网,只在组建的办公室或者宿舍有效,一旦超出这个范围将连接不到网络。按变量的作用范围可以分为局部变量和全局变量,这里先讲局部变量。
php局部变量值函数内定义的变量只在函数内使用,函数外无效;同样地,函数外定义的变量如果没有传递,在函数内也无效。
实例:
代码如下 | 复制代码 |
<?php function fun(){ $a1=5; echo $a2; } fun(); $a2=10; echo $a1; ?> |
以上代码运行后什么也没有输出。
变量函数
变量不仅可以用一些英文字母等字符等义, 也可以对函数定义。如果将一个变量名后加上”()”符号,php将寻找与变量的值相同的函数执行,称之为变量函数。
实例:
代码如下 | 复制代码 |
<?php |
Session是什么
Session是指有始有终的一系列动作或信息,比如去看电影从进入影院到走出影院的整个过程可以称为一个Session。Cookie将数据存储在客户端计算机上,而Session将不定量的变量存储在服务器端。
每一个用户链接网站服务器后便会产生一个Session,所以首先要告诉服务器使用Session功能来存储数据。启用Session功能的方式有两种:
1、使用session_start()函数启动会话,其结构形式如下:
session_start()
函数不能带参数,其返回值为布尔型。
2、在php.ini中设置参数 session.auto_start,将此参数设为1,即当有连接到服务器后Session功能将自动启用。
启动Session后,在使用Session变量之前首先要注册变量,之后才能使用,反之不使用某个变量时就要取消注册。Session_register(变量名)可以注册一个Session变量;Session_unregister(变量名)可以取消注册一个Session变量,例如:
代码如下 | 复制代码 |
session_start(); /* 启动session变量 */ |
调用session变量
php session使用方法:用函数$_SESSION[]可以创建一个函数变量,其格式如下:
代码如下 | 复制代码 |
$_SESSION['$string']=$str; |
参数$string是要定义的变量名,$str是变量值。在调用时使用$_SESSION[$string]的格式。
实例:
代码如下 | 复制代码 |
<?php |
session的使用
本站前面介绍了session的一些概念以及基本操作,这里通过实例介绍php session使用的方法。
实例代码:
代码如下 | 复制代码 |
<?php |
session.php代码:
代码如下 | 复制代码 |
<?php session_start(); echo "用户名是:" .$_COOKIE['name'] ."<br>"; echo "密码是:" .$_SESSION['password'] ."<br>"; echo "访问时间是:" .date('Y m d H:i:s', $_SESSION['time']) ."<br>"; ?> |
获取session_id的值
每一个session都有会被指定一个特定的id,用session_id来标识。我们可以通过session_id()函数查看当前session_id的值,其结构形式如下:
session_id()
实例:
代码如下 | 复制代码 |
<?php |
cookie与session的区别
session和cookie都是重要的会话管理应用,在许多的php开发项目都会用到。它们的作用是能够给不同的用户创建不同的值,从而让不同的用户返回的结果都不相同。
那么session cookie区别在哪里呢?
cookie是利用客户端来创建,当用户用浏览器打开网站时就会给用户创建一个cookie,这个过程是由用户的电脑执行的,网站的服务器只是发送一些指令。因此如果用户禁止了cookie功能,则无法利用cookie来实现相关功能。
session则是利用服务端来创建,整个过程都由服务器来执行,用户无权干预。
在运用时,如果你希望节约服务器的资源,可以选用cookie来进行会话管理;如果你希望所有的浏览者都能使用会话管理,则应该选用session。
相关文章
mysql_connect与mysql_pconnect的区别详解
在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解...2016-11-25- using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
- 这篇文章主要介绍了C#中out与ref的区别实例解析,对C#初学者有不错的学习借鉴价值,需要的朋友可以参考下...2020-06-25
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04谈谈Jquery中的children find 的区别有哪些
精华:find方法能找子孙,children方法只能找儿子一、Jquery中children 语法.children(selector) 说明expr是表达式,可选参数,所有选择器中的表达式都可以用在这,比如按标签名"div",按类名".class",按序号":first"等等,如果表...2015-10-21- 最新版下载: http://www.csdn123.com/uploadfile/2015/0428/20150428062734485.zip 概要 iScroll 4 这个版本完全重写了iScroll这个框架的原始代码。这个项目的产生...2016-05-19
- 在PS中像素大小、文档大小有什么区别呢,这个估计很多初学者不清楚,下面我来给大家讲解一下,希望对你有帮助。 1、像素大小 通常用于显示屏显示的图片大小的调整。菜...2016-09-14
- 这篇文章主要介绍了C++中cin的用法详细,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 这篇文章主要介绍了C#中的try catch finally用法,以实例形式分析了try catch finally针对错误处理时的不同用法,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
- useState 通过在函数组件里调用它来给组件添加一些内部 state,React 会在重复渲染时保留这个 state,接下来通过一个示例来看看怎么使用 useState吧...2021-06-04
- 这篇文章主要介绍了C#中sleep和wait的区别分析,有助于深入理解C#中线程的原理与使用技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了uniapp和vue的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-10-19
PHP中print_r、var_export、var_dump用法介绍
文章详细的介绍了关于PHP中print_r、var_export、var_dump区别比较以及这几个在php不同的应用中的用法,有需要的朋友可以参考一下 可以看出print_r跟var_export都...2016-11-25- 在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input。 下面的例子摘取的是wordpres...2016-11-25
- 这篇文章主要介绍了Delphi常用关键字用法,包括了各个常用的关键字及其详细用法,需要的朋友可以参考下...2020-06-30
- //函数list while(list($id,$username,$password,$add_date,$mdn,$mobile,$channel,$last_date,$area,$nickname) = mysql_fetch_array($rs)){ ...2016-11-25
- 1、声明主键的方法: 您可以在创建表的时候就为表加上主键,如: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name)); 也可以更新表结构时为表加上主键,如: ALTER TABLE tbl_name ADD PRIMARY KEY (in...2015-11-24
- 这篇文章主要介绍了input框中的name和id的区别介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-11-22
- 本文给大家汇总介绍了C#中的几种this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码。...2020-06-25
- 目前在做window.onerror时上报js错误信息的事,整理下相关资料,需要的朋友可以参考下...2016-01-29