LAMP 之 PHP 相关介绍

1 概述
php: 脚本编程语言、嵌入到html中的嵌入式web程序语言,基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
相关代码部分,见博客 http://ghbsunny.blog.51cto.com/7759574/1970717
2 PHP简介
.官网:http://www.php.net/
.PHP是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用
.Rasmus Lerdorf于1994年开始开发PHP,它是初是一组被Rasmus Lerdorf称作“Personal Home Page Tool” 的Perl脚本,这些脚本可以用于显示作者的简历并记录用户对其网站的访问。后来,Rasmus Lerdorf使用C语言将这些Perl脚本重写为CGI程序,还为其增加了运行Web forms的能力以及与数据库交互的特性,并将其重命名为“Personal Home Page/Forms Interpreter”或“PHP/FI”。此时,PHP/FI已经可以用于开发简单的动态web程序了,这即PHP1.0。1995年6月RasmusLerdorf把它的PHP发布于comp.infosystems.www.authoring.cgiUsenet讨论组,从此PHP开始走进人们的视野。1997年,其2.0版本发布。
.1997年,两名以色列程序员Zeev Suraski和AndiGutmans重写的PHP的分析器(parser)成为PHP发展到3.0的基础,而且从此将PHP重命名为PHP: HypertextPreprocessor。此后,这两名程序员开始重写整个PHP核心,并于1999年发布了Zend Engine 1.0,这也意味着PHP 4.0的诞生。2004年7月,Zend Engine 2.0发布,由此也将PHP带入了PHP 5时代。PHP5包含了许多重要的新特性,如增强的面向对象编程的支持、支持PDO(PHP Data Objects)扩展机制以及一系列对PHP性能的改进
3 PHP Zend Engine
.Zend Engine是开源的、PHP脚本语言的解释器,它最早是由以色列理工学院(Technion)的学生AndiGutmans和Zeev
Suraski所开发,Zend也正是此二人名字的合称。后来两人联合创立了ZendTechnologies公司
.Zend Engine 1.0于1999年随PHP 4发布,由C语言开发且经过高度优化,并能够做为PHP的后端模块使用。ZendEngine为PHP提供了内存和资源管理的功能以及其它的一些标准服务,其高性能、可靠性和可扩展性在促进PHP成为一种流行的语
言方面发挥了重要作用
.Zend Engine的出现将PHP代码的处理过程分成了两个阶段:首先是分析PHP代码并将其转换为称作Zend opcode的二进制
格式(类似Java的字节码),并将其存储于内存中;第二阶段是使用ZendEngine去执行这些转换后的Opcode
4 PHP的Opcode
.Opcode是一种PHP脚本编译后的中间语言,类似于Java的ByteCode,或者.NET的MSL。PHP执行PHP脚本代码一般会经过如下4个步骤(扫描-->分析-->编译-->执行)(确切的来说,应该是PHP的语言引擎Zend)
1、扫描:Scanning词法分析,将PHP代码转换为语言片段(Tokens)
2、分析:Parsing语义分析,将Tokens转换成简单而有意义的表达式
3、编译:Compilation将表达式编译成Opocdes
4、执行:Execution顺次执行Opcodes,每次一条,从而实现PHP脚本的功能
** 5 php配置**
.php.ini的核心配置选项文档:
http://php.net/manual/zh/ini.core.php
.php.ini配置选项列表:
http://php.net/manual/zh/ini.list.php
php的模式为模块模式,和apache结合在一起,以模块的方式集合在apache的http服务里,提供服务
php也可以独立的模式,和apache不在同一机器上,通过协议和apache进行通信
.php:脚本语言解释器
.配置文件:/etc/php.ini,/etc/php.d/*.ini
.配置文件在php解释器启动时被读取
.对配置文件的修改生效方法
/etc/httpd/conf.d/php.conf配置相关模块
当满足后缀为.php的文件,就给 x-httpd-php程序处理
Modules:重启httpd服务
FastCGI:重启php-fpm服务
./etc/php.ini配置文件格式:
/etc/php.ini[foo]:SectionHeaderdirective = value
注释符:较新的版本中,已经完全使用;进行注释

:纯粹的注释信息,取消#号,该行代码不能使用,仅注释信息

;:用于注释可启用的directive,取消;号,该行代码可以使用
/etc/php.inimax_execution_time= 30 最长执行时间30smemory_limit 128M 生产不够,可调大display_errors off 调试使用,生产不要打开,否则可能暴露重要信息display_startup_errors off 建议关闭,php启动时的报错post_max_size 8M 最大上传数据大小,生产可能临时要调大,比下面项要大,根据生产环境决定upload_max_filesize 2M 最大上传文件,生产可能要调大max_file_uploads = 20 同时上传最多文件数date.timezone =Asia/Shanghai 指定时区​short_open_tag=on 开启短标签,如<?phpinfo();?>,php的一种格式,需要启用该配置才支持短标签
更改httpd.conf,设置主页为php文件
vim /etc/httpd/conf/httpd.conf<IfModuledir_module> DirectoryIndex index.php index.html</IfModule>
6 php语言格式


**格式一
**
<h1><?php ...phpcode... ?></h1>
格式二
<?php ...phpcode... ?>
**例子 **
例子一
vim a.php 注意后缀是php
<h1><?php echo "Hello world!" ?></h1>
例子二
<?phpecho "<h1>Helloworld!</h1>"?>
例子三
.php测试代码
<?phpecho date("Y/m/d");phpinfo();;phpinfo()是内部函数,可以调出php网页的信息?>
例子四 **
Php使用mysql扩展连接数据库
这里要安装php-mysql包才能测试 yum –y installphp-mysql;
.使用mysql扩展连接数据库的测试代码
<?php$conn = mysql_connect(‘mysqlserver','username','password');if ($conn)echo "OK";elseecho "Failure";mysql_close();?>
** 例子五

Php使用mysqli扩展连接数据库
i为improve的意思,这个是现在主流的连接方法,mysql被淘汰了
面向对象的连接方式,这种连接方式后台数据库只能是mysql,但是pdo(phpdata object)可以连接其他数据库
.Php使用mysqli扩展连接数据库的测试代码
<?php$mysqli=new mysqli("mysqlserver",“username",“password");if(mysqli_connect_errno()){echo "连接数据库失败!";$mysqli=null;exit;}echo "连接数据库成功!";$mysqli->close();?>
7 php的加速器
.php的加速器:基于PHP的特殊扩展机制如opcode缓存扩展也可以将opcode缓存于php的共享内存中,从而可以让同一段代码的后续重复执行时跳过编译阶段以提高性能。这些加速器并非真正提高了opcode的运行速度,而仅是通过分析opcode后并将它们重新排列以达到快速执行的目的
.常见的php加速器有:
.1、APC(Alternative PHP Cache)
遵循PHPLicense的开源框架,PHPopcode缓存加速器,目前的版本不适用于PHP 5.4
项目地址http://pecl.php.net/package/APC
.2、eAccelerator
源于TurckMMCache,早期的版本包含了一个PHPencoder和PHP loader,目前encoder已经不在支持。
项目地址http://eaccelerator.net/
.3、XCache
快速而且稳定的PHP opcode缓存,经过严格测试且被大量用于生产环境。
项目地址:http://xcache.lighttpd.net/,收录EPEL源
.4、ZendOptimizer和ZendGuard Loader
Zend Optimizer并非一个opcode加速器,它是由Zend Technologies为PHP5.2及以前的版本提供的一个免费、闭源的PHP扩展,其能够运行由Zend Guard生成的加密的PHP代码或模糊代码。而Zend Guard Loader则是专为PHP5.3提供的类似于Zend
Optimizer功能的扩展。项目地址http://www.zend.com/en/products/guard/runtime-decoders
.5、NuSpherePhpExpress
NuSphere的一款开源PHP加速器,它支持装载通过NuSphere PHPEncoder编码的PHP程序文件,并能够实现对常规PHP文件的执行加速。项目地址,http://www.nusphere.com/products/phpexpress.htm

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容