LAMP(一)_介绍
目录LAMP介绍WEB资源类型:Web相关语言CGILAMP工作原理PHP简介php配置php设置LAMP基于php模块方式安装LAMPphp代码LAMP介绍L:linuxA:apache (httpd)M:mysql, mariadbM:memcachedP:php, perl, pythonWEB资源类型:静态资源:原始形式与响应内容一致,在客户端浏览器执行动态资源:原始...
LAMP介绍
L:linux
A:apache (httpd)
M:mysql, mariadb
M:memcached
P:php, perl, python
WEB资源类型:
- 静态资源:原始形式与响应内容一致,在客户端浏览器执行
- 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端
Web相关语言
- 客户端技术: html,javascript,css,jpg
- 服务器端技术:php, jsp,python,asp
CGI
CGI:Common Gateway Interface
可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准
- 请求流程:
Client – (http) --> httpd – (cgi) --> application server (program file) – (mysql) --> mysql
php: 脚本编程语言、嵌入到html中的嵌入式web程序语言
基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
LAMP工作原理
PHP简介
官网:http://www.php.net/
PHP是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用
php发展史
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月,Rasmus Lerdorf把它的PHP发布于comp.infosystems.www.authoring.cgi Usenet讨论组,从此PHP开始走进人们的视野。1997年,其2.0版本发布
1997年,两名以色列程序员Zeev Suraski和Andi Gutmans重写的PHP的分析器(parser)成为PHP发展到3.0的基础,而且从此将PHP重命名为PHP: Hypertext Preprocessor。此后,这两名程序员开始重写整个PHP核心,并于1999年发布了Zend Engine 1.0,这也意味着PHP 4.0的诞生。2004年7月,Zend Engine 2.0发布,由此也将PHP带入了PHP 5时代。PHP5包含了许多重要的新特性,如增强的面向对象编程的支持、支持PDO(PHP Data Objects)扩展机制以及一系列对PHP性能的改进
PHP Zend Engine
Zend Engine是开源的、PHP脚本语言的解释器,它最早是由以色列理工学院(Technion)的学生Andi Gutmans和Zeev Suraski所开发,Zend也正是此二人名字的合称。后来两人联合创立了Zend Technologies公司
Zend Engine 1.0于1999年随PHP 4发布,由C语言开发且经过高度优化,并能够做为PHP的后端模块使用。Zend Engine为PHP提供了内存和资源管理的功能以及其它的一些标准服务,其高性能、可靠性和可扩展性在促进PHP成为一种流行的语言方面发挥了重要作用
Zend Engine的出现将PHP代码的处理过程分成了两个阶段:首先是分析PHP代码并将其转换为称作Zend opcode的二进制格式opcode(类似Java的字节码),并将其存储于内存中;第二阶段是使用Zend Engine去执行这些转换后的Opcode
PHP的Opcode
Opcode是一种PHP脚本编译后的中间语言,类似于Java的ByteCode,或者.NET的MSL。PHP执行PHP脚本代码一般会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend)
1、Scanning 词法分析,将PHP代码转换为语言片段(Tokens)
2、Parsing 语义分析,将Tokens转换成简单而有意义的表达式
3、Compilation 将表达式编译成Opcode
4、Execution 顺次执行Opcode,每次一条,从而实现PHP脚本的功能
php配置
-
配置文件:
/etc/php.ini
,/etc/php.d/*.ini
-
对配置文件的修改生效方法
Modules
:重启httpd服务
FastCGI
:重启php-fpm服务 -
/etc/php.ini配置文件格式:
[foo]:Section Header
directive = value
- 注释符:较新的版本中,已经完全使用;进行注释
#
:纯粹的注释信息
;
:用于注释可启用的directive
php设置
php.ini的核心配置选项文档: http://php.net/manual/zh/ini.core.php
php.ini配置选项列表:http://php.net/manual/zh/ini.list.php
php常见设置:
选项 | 说明 |
---|---|
max_execution_time= 30 | 最长执行时间30s |
memory_limit=128M | 生产不够,可调大 |
display_errors=off | 调试使用,不要打开,否则可能暴露重要信息 |
display_startup_errors=off | 建议关闭 |
post_max_size=8M | 最大上传数据大小,生产可能调大,比下面项大 |
upload_max_filesize =2M | 最大上传文件,生产可能要调大 |
max_file_uploads = 20 | 同时上传最多文件数 |
date.timezone =Asia/Shanghai | 指定时区 |
short_open_tag=on | 开启短标签,如<? phpinfo();?> |
LAMP
一、httpd与php结合的方式:
- modules (将php编译成为httpd的模块,默认方式)
- MPM:
prefork: libphp5.so
event, worker: libphp5-zts.so
FastCGI
实现LAMP方式
CentOS 7:
Modules:httpd, php, php-mysql, mariadb-server
FastCGI:httpd, php-fpm, php-mysql, mariadb-server
CentOS 6:
Modules:httpd, php, php-mysql, mysql-server
FastCGI:默认不支持
基于php模块方式安装LAMP
- 安装LAMP
CentOS 6:
yum install httpd php mysql-server php-mysql
service httpd start
service mysqld start
CentOS 7:
yum install httpd, php, php-mysql, mariadb-server
systemctl start httpd.service
systemctl start mariadb.service
注意:要使用prefork模型
php代码
php语言格式
<?php
...php code...
?>
php测试代码
<?php
echo date("Y/m/d H:i:s");
phpinfo();
?>
php代码格式1
<?php
echo "<h1>Hello world!</h1>"
?>
php代码格式2
<h1>
<?php echo "Hello world!" ?>
</h1>
使用mysql扩展连接数据库
php使用mysql扩展连接数据库的测试代码
<?php
$conn = mysql_connect('mysqlserver','username','password');
if ($conn){
echo "OK";
else
echo "Failure";
#echo mysql_error();
mysql_close();
}
?>
使用mysqli扩展连接数据库
php使用mysqli扩展连接数据库的测试代码
<?php
$mysqli=new mysqli("mysqlserver", "username", "password");
if(mysqli_connect_errno()){
echo "Failure";
$mysqli=null;
exit;
}
echo "OK";
$mysqli->close();
?>
使用PDO(PHP Data Object)扩展连接数据库
- php使用pdo扩展连接数据库的测试代码1
<?php
$dsn='mysql:host=mysqlhost;dbname=test';
$username='root';
$passwd='magedu';
$dbh=new PDO($dsn,$username,$passwd);
var_dump($dbh);
?>
- php使用pdo扩展连接数据库的测试代码2
<?php
try {
$user='root';
$pass='magedu';
$dbh = new PDO('mysql:host=mysqlhost;dbname=mysql', $user, $pass);
foreach($dbh->query('SELECT user,host from user') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
更多推荐
所有评论(0)