目录

  • LAMP介绍
    • WEB资源类型:
    • Web相关语言
    • CGI
    • LAMP工作原理
  • PHP简介
    • php配置
    • php设置
  • LAMP
    • 基于php模块方式安装LAMP
    • php代码

LAMP介绍

L:linux
A:apache (httpd)
M:mysql, mariadb
M:memcached
P:php, perl, python

WEB资源类型:

  1. 静态资源:原始形式与响应内容一致,在客户端浏览器执行
  2. 动态资源:原始形式通常为程序文件,需要在服务器端执行之后,将执行结果返回给客户端

Web相关语言

  1. 客户端技术: html,javascript,css,jpg
  2. 服务器端技术: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配置

  1. 配置文件:/etc/php.ini, /etc/php.d/*.ini

  2. 对配置文件的修改生效方法
    Modules:重启httpd服务
    FastCGI:重启php-fpm服务

  3. /etc/php.ini配置文件格式:

[foo]:Section Header
directive = value
  1. 注释符:较新的版本中,已经完全使用;进行注释
    #:纯粹的注释信息
    ;:用于注释可启用的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结合的方式:

  1. modules (将php编译成为httpd的模块,默认方式)
  2. 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

  1. 安装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测试代码

<?phpecho date("Y/m/d H:i:s");phpinfo();
?>

php代码格式1

<?phpecho "<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";elseecho "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)扩展连接数据库

  1. php使用pdo扩展连接数据库的测试代码1
<?php$dsn='mysql:host=mysqlhost;dbname=test';$username='root';$passwd='magedu';$dbh=new PDO($dsn,$username,$passwd);var_dump($dbh);
?>
  1. php使用pdo扩展连接数据库的测试代码2
<?phptry {$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();}
?>

LAMP(一)_介绍相关推荐

  1. python蚂蚁森林自动偷能量_介绍两种实现蚂蚁森林自动“偷”能量的方法

    起因 最近博主迷上了偷能量(蚂蚁森林),后来发现一好友每天定点来博主森林偷能量,很准时 大家发现没,每天都是7.16分准时来偷,每天!因为博主的能量是7.16分成熟~ 本来博主呢,以前也用过这些方法, ...

  2. css游戏代码_介绍CSSBattle-第一个CSS代码搜寻游戏

    css游戏代码 by kushagra gour 由kushagra gour 介绍CSSBattle-第一个CSS代码搜寻游戏 (Introducing CSSBattle - the first ...

  3. vs2017数据可视化建模_介绍数据可视化社区调查2017

    vs2017数据可视化建模 by lars verspohl 由拉斯·韦斯波尔 介绍数据可视化社区调查2017 (Introducing the Data Visualization Communit ...

  4. quartus编译错误不支持芯片_介绍一下如何重新编译Arduino 16U2 的Firmware

    标准 Arduino Uno 上16U2 芯片的作用是烧写328P Firmware.具体来说,它负责把PC上的USB转为328P能够识别的串口,然后每次刷写的时候它会先用一个Pin将328P拉到 R ...

  5. python怎么实现输入多行文字_介绍一个Python 包,几行代码可实现 OCR 文本识别!...

    点击上方 Z先生点记,加为星标 第一时间收到 Python 技术干货! 文字 OCR 识别技术现在已经相当成熟了,无论 其 准确度还是识别速度 都能够满足我们的日常需要:今天给大家介绍一个 Pytho ...

  6. android aar项目_介绍如何调试Xamarin.Android的binding项目

    背景 Xamarin的开发的一个无法避免的弊端就是在很多Android原生态应用中被普遍用到的库,未必有.NET的实现版本.这个问题就如同当时微软WinPhone失败的原因一样,在另外两个平台中非常普 ...

  7. easyui datagrid不是相邻的能合并单元格吗_介绍一种划分账龄的方法,要不了半个小时就能完成...

    有小朋友叫我讲讲往来款,那我就先讲讲怎么划分账龄吧.有些小朋友觉得划分账龄是一件非常耗时的事. 我觉得吧,没那么复杂,简单得很,只要你学会了这种方法. 以应收账款为例. 如上图,在J9单元格写下这个公 ...

  8. List集合_介绍常用方法

    List集合 我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢? 接下来,我们一起学习Collection中的常用几个子类(java.util ...

  9. python判断是不是整数的命令_介绍python判断一个数是不是正小数和整数的方法

    这篇文章主要介绍了python 判断是否为正小数和正整数的实例的相关资料,这里提供实例,实例注释说明很清楚,需要的朋友可以参考下 python 判断是否为正小数和正整数的实例 实现代码: def ch ...

最新文章

  1. c#百度排名点击器编写 及webser 填表.
  2. WPF无边框拖动、全屏、缩放
  3. 与 SENet 互补提升,华为提出自注意力新机制:Weight Excitation
  4. neo4j cypher_优化Neo4j Cypher查询
  5. nginx php上传大小设置
  6. 【Flink】FLink 使用EXACTLY_ONCE 报错 FlinkKafkaInternalProducer
  7. 当前用户更改运行方式出现错误的解决办法
  8. Reason of Random Initialization - Neural Networks
  9. 解决weka打开不了package manner的方法!
  10. AI智能语音机器人安装 --小白如何安装智能电话机器人
  11. info There appears to be trouble with your network connection. Retrying
  12. VI,NDVI,EVI
  13. 综述:视频和图像去雾算法以及相关的图像恢复和增强研究
  14. 当前商务日语教材的现状及其建设建议
  15. 【专题:毫米波】简介
  16. python安装扩展库常用的工具是什么和conda_python习题01——董付国学习系列
  17. 超声波风速风向传感器
  18. YOLOv5全面解析教程③:更快更好的边界框回归损失
  19. 记一次 RestfulToolkit-fix 插件下载,导致idea启动报错
  20. 七海的java学习笔记(八)

热门文章

  1. duilib底层机制剖析:窗体类与窗体句柄的关联
  2. Linux 虚拟内存和物理内存的理解(转)
  3. Lg手机在linux刷机,LG G3卡刷刷机详细图文教程
  4. 《蹭课神器》Alpha版使用说明
  5. 使用Oh-My-Posh美化FluentTerminal
  6. ajax获取涨停股票接口,涨停技术-教你如何捕捉涨停版(绝对经典)
  7. vue-element-table列内容显示过多隐藏
  8. c语言程序三角形实验报告,C语言程序设计实验报告(6)
  9. css中伪类和伪元素有什么不一样
  10. 【文献翻译CVPR2022】SoftGroup for 3D Instance Segmentation on Point Clouds