LAMP 之 PHP 相關介紹
1 概述
php: 腳本編程語言、嵌入到html中的嵌入式web程序語言,基於zend編譯成opcode(二進制格式的字節碼,重復運行,可省略編譯環境)
2 PHP簡介
.官網:http://www.php.net/
.PHP是通用服務器端腳本編程語言,主要用於web開發實現動態web頁面,也是最早實現將腳本嵌入HTML源碼文檔中的服務器端腳本語言之一。同時,php還提供了一個命令行接口,因此,其也可以在大多數系統上作為一個獨立的shell來使用
.Rasmus Lerdorf於1994年開始開發PHP,它是初是一組被Rasmus Lerdorf稱作“Personal Home Page Tool” 的Perl
.1997年,兩名以色列程序員
3 PHP Zend Engine
.Zend Engine是開源的、
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]: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擴展連接數據庫
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
本文出自 “陽光運維” 博客,請務必保留此出處http://ghbsunny.blog.51cto.com/7759574/1970717
LAMP 之 PHP 相關介紹