php 我写这个小为达到实验目的与效果,怎么没有效果

问 题 请问哪里写错了?
$txt = "R:/1.txt";
date_default_timezone_set("PRC");
fOpen( $txt
for($i=0;$i&10 ;$i++)
$str = date("Y-m-d H:i:s",Time());
fwrite( $txt , $str );
fClose( $txt );
解决方案額, fwrite第一個參數爲文件句柄, 你這裏傳的是一個路徑啊
$txt = "R:/1.txt";
date_default_timezone_set("PRC");
//打開文件返回一個文件句柄,
$headle = fopen( $txt
for($i=0;$i&10 ;$i++)
$str = date("Y-m-d H:i:s",time());
fwrite($headle , $str );
fClose( $txt );
本文地址: &
扫一扫关注官方微信51CTO旗下网站
PHP 性能分析与实验――性能的宏观分析
此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要点。本文就改变 PHP 性能分析的角度,并通过实例来分析出 PHP 的性能方面需要注意和改进的点。
作者:来源:OneAPM官方技术博客| 11:44
【编者按】此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要点。本文就改变 PHP 性能分析的角度,并通过实例来分析出 PHP 的性能方面需要注意和改进的点。
对 PHP 性能的分析,我们从两个层面着手,把这篇文章也分成了两个部分,一个是宏观层面,所谓宏观层面,就是 PHP 语言本身和环境层面,一个是应用层面,就是语法和使用规则的层面,不过不仅探讨规则,更辅助以示例的分析。
宏观层面,也就是对 PHP 语言本身的性能分析又分为三个方面:
PHP 作为解释性语言性能有其天然的缺陷
PHP 作为动态类型语言在性能上也有提升的空间
当下主流 PHP 版本本身语言引擎性能
一、PHP 作为解释性语言的性能分析与提升
PHP 作为一门脚本语言,也是解释性语言,是其天然性能受限的原因,因为同编译型语言在运行之前编译成二进制代码不同,解释性语言在每一次运行都面对原始脚本的输入、解析、编译,然后执行。如下是 PHP 作为解释性语言的执行过程。
如上所示,从上图可以看到,每一次运行,都需要经历三个解析、编译、运行三个过程。
那优化的点在哪里呢?可以想见,只要代码文件确定,解析到编译这一步都是确定的,因为文件已不再变化,而执行,则由于输入参数的不同而不同。在性能 优化的世界里,至上绝招就是在获得同样结果的情况下,减少操作,这就是大名鼎鼎的缓存。缓存无处不在,缓存也是性能优化的杀手锏。于是乎 OpCode
缓存这一招就出现了,只有第一次需要解析和编译,而在后面的执行中,直接由脚本到 Opcode,从而实现了性能提速。执行流程如下图所示:
相对每一次解析、编译,读到脚本之后,直接从缓存读取字节码的效率会有大幅度的提升,提升幅度到底有多大呢?
我们来做一个没有 Opcode 缓存的实验。20 个并发,总共 10000 次请求没有经过 opcode 缓存的请求,,得到如下结果:
其次,我们在服务器上打开 Opcode 缓存。要想实现 opcode 缓存,只需要安装 APC、Zend
OPCache、eAccelerator 扩展即可,即使安装了多个,也只启用其中一个。注意的是,修改了 php.ini 配置之后,需要重新加载
php-fpm 的配置。
这里分别启用 APC 和 Zend OPCache 做实验。启用 APC 的版本。
可以看到,速度有了较大幅度的提升,原来每个请求 110ms,每秒处理请求 182 个,启用了 APC 之后 68ms,每秒处理请求 294 个,提升速度将近 40%。
在启用了 Zend Opcache 的版本中,得到同 APC 大致相当的结果。每秒处理请求 291 个,每请求耗时 68.5ms。
从上面的这个实验可以看到,所用的测试页面,有 40ms 以上的时间花在了语法解析和编译这两项上。通过将这两个操作缓存,可以将这个处理过程的速度大大提升。
这里附加补充一下,OpCode 到底是什么东东,OpCode 编译之后的字节码,我们可以使用bytekit 这样的工具,或者使用 vld PHP 扩展来实现对 PHP 的代码编译。如下是 vld 插件解析代码的运行结果。
可以看到每一行代码被编译成相应的 OpCode 的输出。
二、PHP 作为动态类型语言的性能分析与改进
第二个是 PHP 语言是动态类型的语言,动态类型的语言本身由于涉及到在内存中的类型推断,比如在 PHP 中,两个整数相加,我们能得到整数值,一个整数和一个字符串相加,甚至两个字符串相加,都变成整数相加。而字符串和任何类型连接操作都成了字符串。
$a = 10.11;
$b = &30&;
var_dump($a+$b);
var_dump(&10&+$b);
var_dump(10+&20&);
var_dump(&10&+&20&);
运行结果如下:
float(40.11)
语言的动态类型为开发者提供了方便,语言本身则会因为动态类型而降低效率。在 Swift 中,有一个特性叫类型推断,我们可以看看类型推断会带来多大的一个效率上的差别呢?对于需要类型推断与不需要类型推断两段 Swift 代码,我们尝试编译一下看看效果如何。 第一段代码如下:
这是一段 Swift 代码,字典只有 14 个键值对,这段代码的编译,9 分钟了还没有编译完成(5G 内存,2.4GHz CPU),编译环境为 Swift 1.2,Xcode 6.4。
但是如果调整代码如下:
也就是加上了类型限定,避免了 planeLocation 的类型推断。编译过程花了 2S 。
可见,作为动态类型附加的类型推断操作极大地降低了程序的编译速度。 当然,这个例子有点极端,用 Swift 来类比 PHP 也不一定合适,因为 Swift 语言本身也还在不断的进化过程中。本例子只是表明在编程语言中,如果是动态类型语言,就涉及到对动态类型的处理,从编译的角度讲是会受影响的。
那么作为动态类型的 PHP 的效率如何提升呢?从 PHP
语言本身这个层面是没有办法解决的,因为你怎么写也是动态类型的代码。解决办法就是将PHP转化为静态类型的表示,也就是做成扩展,可以看到,鸟哥的很多 项目,比如 Yaf
框架,都是做成了扩展的,当然这也是由于鸟哥是 C 高手。扩展由于是 C 或者 C++
而写,所以不再是动态类型,又加之是编译好的,而 C 语言本身的效率也会提升很多。所以效率会大幅度提高。
下面我们来看一段代码,这段代码,只是实现了简单的素数运算,能计算指定值以内的素数个数,用的是普通的筛选法。现在看看扩展实现,跟 PHP 原生实现的效率差别,这个差别当然,不仅仅是动态类型和编译类型的差别,还有语言效率的差别。
首先是用纯 PHP 写成的算法,计算 1000 万以内的素数个数,耗时在 33s 上下,实验了三次,得到的结果基本相同。
其次,我们将这个求素数个数的过程,编写成了 PHP 扩展,在扩展中实现了 getprimenumbers 函数,输入一个整数,返回小于该整数的素数。得到的结果如下,这个效率的提升是非常惊人的,在 1.4s 上下即返回。速度提升 20 倍以上。
可以想见,静态和编译类型的语言,其效率得到了惊人的提升。本程序的 C 语言代码如下:
PHP_FUNCTION(get_prime_numbers)&{&&&&&long&&&&&&if&(zend_parse_parameters(ZEND_NUM_ARGS()&TSRMLS_CC,&&l&,&&value)&==&FAILURE)&{&&&&&&&&&&&&&return;&&&&&}&&&&&&int&*numbers&=&(int&*)malloc(sizeof(int)*128*10000);&&&&&&memset(numbers,&0x0,&128*10000);&&&&&int&num&=&2;&&&&&&&&&numbers[0]&=&2;&&&&&&&&&numbers[1]&=&3;&&&&&&&&&bool&flag&=&&&&&&&&&&double&f&=&0;&&&&&&&&&int&i&=&0;&&&&&&&&&int&j&=&0;&&&&&&&&&for(i=5;&i&=&i+=2)&&&&&&&&&{&&&&&&&&&&&&&flag&=&&&&&&&&&&&&&&f&=&sqrt(i);&&&&&&&&&&&&&for(j=0;&j&j++)&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&if(i%numbers[j]==0)&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&flag&=&&&&&&&&&&&&&&&&&&&&&&break;&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&if(numbers[j]&f)&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&break;&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&}&&&&&&&&&&&&&if(flag)&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&numbers[num]&=&i;&&&&&&&&&&&&&&&&&num++;&&&&&&&&&&&&&}&&&&&&&&&}&&&&&&&&&free(numbers);&&&&&&&&&RETURN_LONG(num);&}&
三、PHP 语言本身底层性能引擎提升
第三个性能优化层面是语言本身的性能提升,这个就不是我们普通开发者所能做的了。在 PHP
7以前,寄希望于小版本的改进,但是改进幅度不是非常的显著,比如 PHP 5.3 、PHP 5.4、PHP 5.5、PHP 5.5
对同一段代码的性能比较,有一定程度的进步。
PHP 5.3 的版本在上面的例子中已讲过,需要 33s 左右的时间,我们现在来看别的PHP版本。分别运行如下:
PHP 5.4 版,相较 5.3 版已经有一定程度的提升。快 6 秒左右。
PHP 5.5 版在 PHP 5.4的基础上又进了一步,快了 6S。
PHP5.6 反而有些退步。
PHP 7 果真是效率提升惊人,是 PHP5.3 的 3 倍以上。
以上是求素数脚本在各个 PHP 版本之间的运行速度区别,尽管只测试了这一个程序,也不是特别的严谨,但是这是在同一台机器上,而且编译 configure 参数也基本一样,还是有一定可比性的。
在宏观层面,除了上面的这些之外,在实际的部署过程中,对 的优化,还体现为要减少在运行中所消耗的资源。所以 FastCGI 模式和 mod_php 的模式比传统的 CGI 模式也更为受欢迎。因为在传统的 CGI 模式中,在每一次脚本运行都需要加载所有的模块。而在程序运行完成了之后,也要释放模块资源。如下图所示:
而在 FastCGI 和 mod_php 模式中,则不需要如此。只有 php-fpm 或者 Apache 启动的时候,需要加载一次所有的模块,在具体的某次运行过程中,并不需要再次加载和释放相关的模块资源。
这样程序性能的效率得到了提升。以上就是有关 PHP 宏观层面的性能优化的分析,在本文的第二部分我们将探讨应用方面的 PHP 优化准则。敬请期待!
工程师编译整理。OneAPM 是领域的新兴领军企业,能帮助企业用户和开发者轻松实现:缓慢的程序代码和 SQL 语句的实时抓取。想阅读更多技术文章,请访问
【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条头条热点热点
24H热文一周话题本月最赞
讲师:26787人学习过
讲师:119782人学习过
讲师:90590人学习过
精选博文论坛热帖下载排行
本书是目前中文版本第一个真正介绍PHP 5及MySQL 5新增语法与功能的权威宝典!
本书本着精、全、要三宗旨,从理论中延伸,从实践中深入,详...
订阅51CTO邮刊当前位置: >>
php实验报告
学生实验报告课程名称: PHPweb 开发 灵 锦 验 39 56010小组成员: 兰 黄 曾韩文功 穆 军年 专级: 业:2011 级 信息管理与信息系统 杨单 5#管理学院实验室指导教师: 实验地点:20学年至 20 学年度 第学期 目实验一 实验二 实验三 实验四 实验五 实验六开发环境搭建录PHP 基本语法(一) MySQL 基本操作 表单处理 数据库操作 预定义变量 实验 1 开发环境搭建 实验目的:熟悉 PHP+MySQL+Apache 开发环境的搭建,测试开发环境。实验内容:1. 将服务器上“实验工具”中的压缩文件“PHPnow-1.5.1.zip”下载到本地机器并 解压缩,点击 setup.exe 进行安装,Apache 选 2.0,PHP 选 5.0,设置好 MySQL 的 root 用户的密码,并在安装成功后自动弹出的 http://127.0.0.1/页面中输 入密码测试。2. 上一步成功后,在浏览器中输入 http://localhost/phpmyadmin 测试 MySQL 数据 库,用户名 root,密码为前面所设,能登陆进去即为成功安装。(注意:以后 运行 MySQL 数据库即按此方法操作)3.使用文本编辑器(记事本)输入书上的第一个 php 程序 helloworld 的例子,并保存 为 helloworld.php 文件, 将该文件复制到环境安装成功后第一步解压缩后的文件目录下的 “htdocs”文件夹中,并在浏览器中使用地址 http://localhost/helloworld.php 进行测 试,若能看到预料结果即表示环境安装测试成功。(注意:以后运行 php 程序即按此方法 操作) 心得体会学会了 PHP+MySQL+Apache 开发环境的搭建,在安装过程,出现的问题是 Apache Pn 安装出错,因为服务器被占用或者没有权限,通过网络查找解决办法,最后成功安装了。指导教师评阅: 实验 2 PHP 基本语法(一) 实验目的:熟悉 PHP 基本语法。实验内容:1、 以下程序(命名为 2-1.php) :&? $name=”hello1,world1”; $NAME=”hello2,world2”; $NaME=”hello3,world3”; echo “\$name=$name\n”; ECHO “\$NAME=$NAME\n”; EcHo “\$NaME=$NaME”; ?&查看运行结果,要达到真正分行,应该怎么修改,为什么?2、 以下程序(命名为 2-2.php) :&? #PHP 变量无类型检查 $what=”Fred”; echo “\$what 的值=$what&br&”; if(is_string($what)) echo “\$what 是字符串型变量&hr&”; $what=35; echo “\$what 的值=$what&br&”; if(is_int($what)) echo “\$what 是整型变量&hr&”; $what=array(?Fred?,?35?,?wilma?); echo “\$what 的值为:&br&”; foreach($what as $e) echo “$e&br&”; if(is_array($what)) echo “\$what 是数组型变量”; ?&结合运行结果分析 PHP 变量的特点。3、 以下程序(命名为 2-3.php) :&? $name=”Tom”; echo “Hi,$name&br&”; echo ?Hi,$name?; ?&结合运行结果分析在表示字符串时单引号和双引号的区别。 4、 种方法创建数组 person,数组元素依次为 Edison,Wankel,Crapper,并给该数组元素分别 命名为 Light bulb,Rotary Engine,Toilet,并用相关循环语句输出。 (命名为 2-4.php)5、实现下程序:&? Function update_counter(){ $counter++; } $counter=10; update_counter(); echo $ ?&结合函数变量的作用域分析运行结果。 心得体会通过本次实验,学会了如何使用 PHP 基本语法,能够简单实现一些小的 PHP 页面。基 本语法中,有一定的规律和要求,只要认真去被和记下,就能够熟练写出一些基本的语句 了。指导教师评阅: 实验 3 MySQL 基本操作 实验目的:熟悉 MySQL 的建数据库、建表、插入记录、创建关系、创建视图、导入导出等基本操 作。实验内容:安装 phpnow 环境包,进入 phpmyadmin,(具体操作见实验 1)完成以下操作: 1.创建一个数据库 studentgrade;2.在数据库中创建三个表 sinfo(sid,sname,sage,ssex,sdept), course(cid,cname,ccredit),grade(sid,cid,sgrade),为每个字段选择合适的数据类型, 并将前两个表中的 sid、cid 设置为自增类型; 3.为表设置关键字 (上题表中标下划线的字段) , 与其他两个表联系, 为 grade 表中的 sid, cid 设置外键; 4.往三个表中插入数据(自拟),注意先后顺序;5.结合数据库课程练习各种查询; 6.创建视图 viewgrade(sid,sname,cid,cname,sgrade);7.通过数据库的导出功能,导出 studentgrade 数据库的 sql 脚本文件;8.创建一个新数据库 studentgrade2,利用导入功能,将题 8 中的 sql 备份文件恢复到新 数据库中。 心得体会通过本次实验,学会了使用 PHPMyAdmin 数据库的创建以及备份还原、删除、查询等 各种功能的操作方法,并编写一些 SQL 语句实现对表的增删查改操作。指导教师评阅: 实验 4 表单处理实验目的:熟悉 PHP 中表单的基本处理。实验内容:1. 下载“表单处理.ppt”教案,结合 Dreamweaver 了解各种表单元素的相关属性和操作方 法, 按照要求完成网页和程序 form1.htm、 echo1.php、 form2.htm、 echo2.php、 form3.htm、 echo3.php、form4.htm、echo4.php、form5.htm、echo5.htm; Form1.htm
2. 将以上程序中 form 的 action 属性分别改为“GET”、“POST”,分析产生结果的不同; 答: 不同之处:GET 的方式是将表单控件的 name/value 信息经过编码后,通过 ULR 发 送,可以在地址栏中看见。而 POST 则是将表单中的内容同过 HTTP 发送,在地址栏中看 不到表单的提交信息。 3. 参考以下百度、新浪、搜狐等门户网站的注册页面,制作一个注册表单页面,要用到上 课讲的所有表单元素,点击提交能够跳转生成详细显示页面(即将注册表单页所填内容 完整显示)。 注册页面:心得体会学会了用 html 语句设计表单页面,并结合 PHP 进行嵌入使用。掌握了几种表单类型, 并实现了注册页面。过程中有些困难,但是经过查阅图书和老师的教案,最终还是得出了 想要的结果。指导教师评阅: 实验 5 数据库操作 实验目的:熟悉在 PHP 对 MySQL 的基本操作。实验内容:1、 PHP 中对 MySQL 数据库操作的几个基本函数(具体见课件),能完成课件上的关于 对数据进行增删改查的例子; 插入操作:更新操作:删除操作: 2、 实验制作的注册表单的基础上,建立相应数据库和表,将页面上输入的数据提交 到数据库表中存储; 数据表 User:注册后存储: 3、 一题的基础上,做一个登录表单,实现登录(即验证用户名和密码的匹配),登 录成功后将存储到表中的记录输出,生成一个新的页面显示这些数据(即前面在注 册表单中输入的数据);心得体会通过本次实验,学会了如何在 PHP 语句中实现对 PHPMyAdmin,SQL 数据库中的数据进 行插入删除更新查找;还学会了实现如何将注册页面的信息存储到数据库中,并实现用户 的登录。指导教师评阅: 实验 6 预定义变量实验目的:熟悉 Cookie 和 Session 的使用。实验内容:Cookie 和 Session 的概念及创建、使用、删除的方法(具体见课件), 能完成课件上的相关例子; Cookie 的创建: 1、Cookie 使用:Cookie 删除 Session 注册:Session 变量访问: 2、在上一个实验制作的登录表单的基础上, 在验证登录成功后将用户相关信 息写入 Cookie 和 Session,通过相关页面分别读取 Cookie 和 Session 中保存的 信息;删除 session: 在上一题的基础上,做一个注销页面,即从登录状态变为退出状态,要求 分别删除 Cookie 和 Session; 删除 sessiond 代码:3、退出后:4、 认真阅读书上 P192“用户系统登录”程序,分析其对 Session 的使用。 答: SESSION 也称会话,存储在服务器上的一小段文件,用于存储用户的相关信息。SESSION 之间使用会话标识来区别,每 1 个 SESSION 都有唯一的一个标识。用户登录或者访问一些 初始页面时,服务器会为客户端临时分配一个随机数字即 SesionID;用户通过 SesionID 可 以注册一些特殊变量,称为会话变量,这些变量的数据保存在服务器端,从而使服务器端 能够 实时了解用户端的用户信息。心得体会通过本次实验学会了如何在 PHP 中使用 Cookie 和 session,掌握了它们之间的区别以 及相关的注册修改查询删除等方法;实验过程主要需要掌握的就是两种类型分别对应的方 法。指导教师评阅:
php实验报告_计算机软件及应用_IT/计算机_专业资料。网络安全与信息化学院《计算机游戏基础》 课程实验报告学号:
专业: 数字媒体技术 实验名称 姓名: 雷...PHP实验报告_互联网_IT/计算机_专业资料。实验报告 课程名称: LAMP 网络应用与开发 姓班名: 级: 赵成龙 物联网 13101 信息中心 A103
实验地点: ...php实验报告_计算机软件及应用_IT/计算机_专业资料。中南民族大学php实验报告学生实验报告课程名称: PHPweb 开发 灵锦验 39 56010 ...php实验报告_计算机软件及应用_IT/计算机_专业资料。实验报告课程名称 实验名称 实验目的 运用 PHP 技术和 MySQL 数据库实现对一个数据表的操作。 实验环境 1....php实验报告四_管理学_高等教育_教育专区。PHP实验报告 华北科技学院 实验综合成绩 其中 实验态度 实验报告 (百分制) 优良中 及格 不及格 优良中 及格 不及格 ...PHP数据采集实验报告_互联网_IT/计算机_专业资料。PHP数据采集实验报告PHP 数据采集实验报告 班级:10 网工三班 实验目的和要求: 1、使学生掌握各种 Form 表单控件...php实验报告二_调查/报告_表格/模板_实用文档。实验综合成绩 其中 实验态度 实验报告 (百分制) 优良中 及格 不及格 优良中 及格 不及格 实验评阅 教师签名 华北...php实验报告二_理学_高等教育_教育专区。PHP实验报告 华北科技学院 实验综合成绩 其中 实验态度 实验报告 (百分制) 优良中 及格 不及格 优良中 及格 不及格 实验...php实验报告三_管理学_高等教育_教育专区。PHP实验报告 华北科技学院 实验综合成绩 其中 实验态度 实验报告 (百分制) 优良中 及格 不及格 优良中 及格 不及格 ...学生实验报告(二) 学生姓名 实验项目 ■必修 □选修 实验地点 指导教师 李勇 学号 Z 同组人:无 ■操作性实验 □综合性实验 PHP 基本语法 □演示性实验...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 为达到实验目的与效果 的文章

 

随机推荐