1. 程式人生 > >LAMP 之 PHP 相關介紹

LAMP 之 PHP 相關介紹

php

1 概述

php: 腳本編程語言、嵌入到html中的嵌入式web程序語言,基於zend編譯成opcode(二進制格式的字節碼,重復運行,可省略編譯環境)

2 PHP簡介

.官網:http://www.php.net/

.PHP是通用服務器端腳本編程語言,主要用於web開發實現動態web頁面,也是最早實現將腳本嵌入HTML源碼文檔中的服務器端腳本語言之一。同時,php還提供了一個命令行接口,因此,其也可以在大多數系統上作為一個獨立的shell來使用

.Rasmus Lerdorf1994年開始開發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.019956RasmusLerdorf把它的PHP發布於comp.infosystems.www.authoring.cgiUsenet討論組,從此PHP開始走進人們的視野。1997年,其2.0版本發布。

.1997年,兩名以色列程序員

Zeev SuraskiAndiGutmans重寫的PHP的分析器(parser)成為PHP發展到3.0的基礎,而且從此將PHP重命名為PHP: HypertextPreprocessor。此後,這兩名程序員開始重寫整個PHP核心,並於1999年發布了Zend Engine 1.0,這也意味著PHP 4.0的誕生。20047月,Zend Engine 2.0發布,由此也將PHP帶入了PHP 5時代。PHP5包含了許多重要的新特性,如增強的面向對象編程的支持、支持PDO(PHP Data Objects)擴展機制以及一系列對PHP性能的改進

3 PHP Zend Engine

.Zend Engine是開源的、

PHP腳本語言的解釋器,它最早是由以色列理工學院(Technion)的學生AndiGutmansZeev

Suraski所開發,Zend也正是此二人名字的合稱。後來兩人聯合創立了ZendTechnologies公司

.Zend Engine 1.01999年隨PHP 4發布,由C語言開發且經過高度優化,並能夠做為PHP的後端模塊使用。ZendEnginePHP提供了內存和資源管理的功能以及其它的一些標準服務,其高性能、可靠性和可擴展性在促進PHP成為一種流行的語

言方面發揮了重要作用

.Zend Engine的出現將PHP代碼的處理過程分成了兩個階段:首先是分析PHP代碼並將其轉換為稱作Zend opcode的二進制

格式(類似Java的字節碼),並將其存儲於內存中;第二階段是使用ZendEngine去執行這些轉換後的Opcode

4 PHPOpcode

.Opcode是一種PHP腳本編譯後的中間語言,類似於JavaByteCode,或者.NETMSLPHP執行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結合在一起,以模塊的方式集合在apachehttp服務裏,提供服務

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]:SectionHeader
directive = value

註釋符:較新的版本中,已經完全使用;進行註釋

#:純粹的註釋信息,取消#號,該行代碼不能使用,僅註釋信息

;:用於註釋可啟用的directive,取消;號,該行代碼可以使用

/etc/php.ini
max_execution_time= 30 最長執行時間30s
memory_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>

例子二

<?php
echo "<h1>Helloworld!</h1>"
?>

例子三

.php測試代碼

<?php
echo 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";
else
echo "Failure";
mysql_close();
?>

例子五

Php使用mysqli擴展連接數據庫

iimprove的意思,這個是現在主流的連接方法,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加速器有:

.1APC(Alternative PHP Cache)

遵循PHPLicense的開源框架,PHPopcode緩存加速器,目前的版本不適用於PHP 5.4

項目地址http://pecl.php.net/package/APC

.2eAccelerator

源於TurckMMCache,早期的版本包含了一個PHPencoderPHP loader,目前encoder已經不在支持。

項目地址http://eaccelerator.net/

.3XCache

快速而且穩定的PHP opcode緩存,經過嚴格測試且被大量用於生產環境。

項目地址:http://xcache.lighttpd.net/,收錄EPEL

.4ZendOptimizerZendGuard Loader

Zend Optimizer並非一個opcode加速器,它是由Zend TechnologiesPHP5.2及以前的版本提供的一個免費、閉源的PHP擴展,其能夠運行由Zend Guard生成的加密的PHP代碼或模糊代碼。而Zend Guard Loader則是專為PHP5.3提供的類似於Zend

Optimizer功能的擴展。項目地址http://www.zend.com/en/products/guard/runtime-decoders

.5NuSpherePhpExpress

NuSphere的一款開源PHP加速器,它支持裝載通過NuSphere PHPEncoder編碼的PHP程序文件,並能夠實現對常規PHP文件的執行加速。項目地址,http://www.nusphere.com/products/phpexpress.htm

本文出自 “陽光運維” 博客,請務必保留此出處http://ghbsunny.blog.51cto.com/7759574/1970717

LAMP 之 PHP 相關介紹