PHP:Hypertext Preprocessor超文本預(yù)處理器的縮寫(xiě),是一種被廣泛應(yīng)用的開(kāi)發(fā)源代碼的多用途腳本語(yǔ)言,它可以嵌套在HTML中,尤其是web開(kāi)發(fā)。
PHP代碼塊被包含在特殊的起始符和結(jié)束符中的。
PHP功能:
1.服務(wù)端腳本是其主要領(lǐng)域,具有這項(xiàng)工作需要PHP解析器(CGI或服務(wù)器模塊)、web服務(wù)器、web瀏覽器支持。
2.命令行腳本,編寫(xiě)一段php腳本,不需要任何服務(wù)器和瀏覽器來(lái)運(yùn)行它,僅僅需要php解析器來(lái)執(zhí)行。
3.應(yīng)用程序,通過(guò)PHP-GTK來(lái)編寫(xiě)。
今天是搭建php來(lái)為今后的LNMP做個(gè)準(zhǔn)備,所以我們的用途是web。
一些基本概念~
CGI:通用網(wǎng)關(guān)接口,為http服務(wù)器和其他機(jī)器上的程序服務(wù)通信交流的一種工具,CGI需要運(yùn)行在網(wǎng)絡(luò)服務(wù)器上。
傳統(tǒng)CGI缺點(diǎn):性能差,每次HTTP服務(wù)器遇到動(dòng)態(tài)程序時(shí)都需要通過(guò)重新啟動(dòng)解析器來(lái)執(zhí)行解析,之后結(jié)果才會(huì)被返回給HTTP服務(wù)器,這在處理高并發(fā)訪問(wèn)時(shí)幾乎是不可用的。
FastCGI:是一個(gè)可伸縮、高速的HTTP服務(wù)器和動(dòng)態(tài)腳本語(yǔ)言之間通信的接口,在unxi下是FastCGI的接口是socket,主要優(yōu)點(diǎn)是將動(dòng)態(tài)語(yǔ)言和HTTP服務(wù)器分離出來(lái)。流行的HTTP服務(wù)器都支持FastCGI。
FastCGI接口采用C/S結(jié)構(gòu)。當(dāng)http服務(wù)器遇到動(dòng)態(tài)程序時(shí),直接交付給FastCGI進(jìn)程來(lái)執(zhí)行,結(jié)果返回給瀏覽器,HTTP服務(wù)器可以專一的處理靜態(tài)請(qǐng)求、將動(dòng)態(tài)腳本服務(wù)器的結(jié)果返回給客戶端,提升整體新能。
FPM:FastCGI進(jìn)程管理器,對(duì)高負(fù)載網(wǎng)站有很大幫助。功能有:支持平滑停止/啟動(dòng)、可以工作于不同的 uid/gid/chroot 環(huán)境下,并監(jiān)聽(tīng)不同的端口和使用不同的 php.ini 配置文件、
stdout 和 stderr 日志記錄、在發(fā)生意外情況的時(shí)候能夠重新啟動(dòng)并緩存被破壞的 opcode、支持文件上傳優(yōu)化、慢日志、fastcgi_finish_request()- 特殊功能:用于在請(qǐng)求完成和刷新數(shù)據(jù)后,繼續(xù)在后臺(tái)執(zhí)行耗時(shí)的工作(錄入視頻轉(zhuǎn)換、統(tǒng)計(jì)處理等)、動(dòng)態(tài)/靜態(tài)子進(jìn)程產(chǎn)生、基本 SAPI 運(yùn)行狀態(tài)信息(類似Apache的 mod_status)、基于 php.ini 的配置文件。
連接器(Connector):在mysql文檔中指出,連接器是允許應(yīng)用程序連接到MySQL服務(wù)器的一個(gè)軟件,mysql提供了多數(shù)語(yǔ)言的連接器,包括php。
應(yīng)用程序與數(shù)據(jù)庫(kù)通信,需要編寫(xiě)php代碼執(zhí)行連接數(shù)據(jù)服務(wù)器、查詢數(shù)據(jù)庫(kù)、與數(shù)據(jù)庫(kù)相關(guān)的其他活動(dòng),需要軟件來(lái)提供php應(yīng)用程序使用api。此軟件稱為連接器,允許應(yīng)用程序連接到數(shù)據(jù)庫(kù)服務(wù)器。
Driver:驅(qū)動(dòng)是一段設(shè)計(jì)用來(lái)于一種特定類型的數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行交互的軟件代碼。驅(qū)動(dòng)可能會(huì)調(diào)用一些庫(kù),比如MySQL客戶端庫(kù)或者M(jìn)ySQL Native驅(qū)動(dòng)庫(kù)。 這些庫(kù)實(shí)現(xiàn)了用于和MySQL數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行交互的底層協(xié)議。
擴(kuò)展:在php文檔中指出php代碼由核心組成,具有核心功能的可選擴(kuò)展。php的MySQL擴(kuò)展是使用php擴(kuò)展框架實(shí)現(xiàn)的。擴(kuò)展通常會(huì)向程序員公開(kāi)api以允許編程方式使用工具或者不公開(kāi)api。
API:應(yīng)用程序變編程接口或API定義應(yīng)用程序需要調(diào)用的類、方法、函數(shù)和變量,以執(zhí)行所需要的任務(wù)。對(duì)于需要與數(shù)據(jù)庫(kù)通信的php應(yīng)用程序,必要的API通常通過(guò)PHP擴(kuò)展來(lái)實(shí)現(xiàn)。
API可以是程序性的或者面向?qū)ο蟮?。使用過(guò)程api可以調(diào)用函數(shù)來(lái)執(zhí)行任務(wù),使用面向?qū)ο骯pi可以通過(guò)api實(shí)例化類,然后在結(jié)果對(duì)象上調(diào)用方法。
在編寫(xiě)需要連接到MySQL服務(wù)器的PHP應(yīng)用程序時(shí),有3個(gè)api選項(xiàng)(擴(kuò)展)可用:
1.php的mysql擴(kuò)展:允許開(kāi)發(fā)與mysql數(shù)據(jù)庫(kù)交互的PHP應(yīng)用程序,僅適用于mysql4.3.1以下版本,此擴(kuò)展提供一個(gè)過(guò)程api;
通常擴(kuò)展位于源碼包路徑下/ext/mysql中。(ext表示Extended file system 延伸文件系統(tǒng),簡(jiǎn)稱ext)。
2.php的mysqli擴(kuò)展:mysql的更新改進(jìn)擴(kuò)展,允許我們?cè)L問(wèn)MySQL 4.1及以上版本提供的功能,此擴(kuò)展包含在php5以上版本,此mysqli擴(kuò)展改進(jìn) 面向?qū)ο蟮腶pi、支持多語(yǔ)句、增強(qiáng)調(diào)試功能等等。
通常擴(kuò)展位于源碼包路徑下/ext/mysqli中。
3.php的數(shù)據(jù)對(duì)象pdo:pdo:PHP Data Objects簡(jiǎn)寫(xiě),用于php應(yīng)用程序的數(shù)據(jù)庫(kù)抽象層。無(wú)論應(yīng)用程序連接到哪種類型的數(shù)據(jù)庫(kù),pdo都會(huì)將php應(yīng)用程序提供一致的api。
通常擴(kuò)展位于源碼包路徑下/ext/pdo中。
驅(qū)動(dòng)程序:
pdo_mysql 驅(qū)動(dòng)程序:pdo_mysql是一個(gè)實(shí)現(xiàn)PHP數(shù)據(jù)對(duì)象(PDO)接口的驅(qū)動(dòng)程序,用于實(shí)現(xiàn)從PHP到MySQL數(shù)據(jù)庫(kù)的訪問(wèn)。
mysqlnd驅(qū)動(dòng)程序:為了與mysql服務(wù)器通信,mysqli和pdo_mysql各自使用一個(gè)實(shí)現(xiàn)所需協(xié)議的庫(kù)。過(guò)去唯一使用的庫(kù)是mysql客戶端庫(kù)稱為libmysqlclient。libmysqlclient未針對(duì)php應(yīng)用程序的通信做優(yōu)化,故而mysqlnd(mysql native本機(jī)本地 driver)被開(kāi)發(fā)。MySQL Native Driver是使用PHP擴(kuò)展框架實(shí)現(xiàn)的,位于源碼包路徑下ext/mysqlnd。它不會(huì)向PHP程序員公開(kāi)API。只能與MySQL服務(wù)器版本4.1.3及更高版本一起使用。
mysqlnd不提供api,提供api的是擴(kuò)展(mysqli和pdo),這些擴(kuò)展使mysqlnd和mysql server進(jìn)行通信。
mysqli擴(kuò)展是在PHP 5.0.0版本中引入的。mysqlnd驅(qū)動(dòng)程序包含在PHP 5.3.0版中。
從應(yīng)用的層面(上層)來(lái)看,通過(guò)php的mysql和mysqli擴(kuò)展提供的API去操作數(shù)據(jù)庫(kù);
從底層來(lái)看,mysqlnd提供了底層和數(shù)據(jù)庫(kù)交互的支持(和mysql數(shù)據(jù)庫(kù)進(jìn)行網(wǎng)絡(luò)協(xié)議交互);
在linux上安裝:
通常安裝php使用二進(jìn)制版本安裝,這些二進(jìn)制版本是在支持mysql擴(kuò)展下構(gòu)建的,但擴(kuò)展庫(kù)需要附加軟件包進(jìn)行安裝。
從源代碼構(gòu)建PHP可以指定要使用的MySQL擴(kuò)展,以及為每個(gè)擴(kuò)展選擇客戶端庫(kù)。mysqlnd驅(qū)動(dòng)程序是推薦的客戶端庫(kù),因?yàn)樗梢蕴岣咝阅懿⒃试S訪問(wèn)使用MySQL客戶端庫(kù)時(shí)不可用的功能。
PHP5.4以上版本默認(rèn)的客戶端庫(kù)使用mysqlnd、選項(xiàng)配置–with-mysqli 。
擴(kuò)展和客戶端庫(kù)可自由組合使用。如下:
./configure
–with-mysql=mysqlnd #使用mysql擴(kuò)展并使用mysqlnd官方驅(qū)動(dòng)程序
–with-mysqli=mysqlnd #使用mysqli擴(kuò)展并使用mysqlnd官方驅(qū)動(dòng)程序
–with-pdo-mysql=mysqlnd #使用pdo擴(kuò)展并使用mysqlnd官方驅(qū)動(dòng)程序
安裝FastCGI,在編譯安裝php時(shí)加入 –enable-fpm配置選項(xiàng)來(lái)激活FPM支持。
1.需要先檢查是否安裝nginx和mysql
[root@WebA-136 ~]# netstat -anlutp | egrep "mysql|nginx"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4547/nginx
tcp 0 0 :::3306 :::* LISTEN 5891/mysqld
[root@WebA-136 ~]#
2.檢查依賴庫(kù),檢查后linux只默認(rèn)安裝了zlib-devel庫(kù),記得安裝以下包哦~
[root@WebA-136 ~]# rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
zlib-devel-1.2.3-29.el6.x86_64
[root@WebA-136 ~]#
居然yum源里沒(méi)有l(wèi)ibiconv-devel庫(kù),需要手動(dòng)安裝
[root@WebA-136 ~]#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
[root@WebA-136 ~]# tar xf libiconv-1.15.tar.gz -C /usr/local/src/
[root@WebA-136 libiconv-1.15]# mkdir /usr/local/libiconv
[root@WebA-136 libiconv-1.15]# ./configure –prefix=/usr/local/libiconv
[root@WebA-136 libiconv-1.15]# make && make install
3.安裝epel源和libmcrypt庫(kù)(對(duì)程序運(yùn)行時(shí)添加/移除算法有幫助)、mhash庫(kù)
[root@WebA-136 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyum.com/repo/epel-6.repo
[root@WebA-136 ~]# yum install libmcrypt-devel mhash -y
4.安裝mcrypt加密擴(kuò)展庫(kù)
[root@WebA-136~]#yuminstallmcrypt-y
5.執(zhí)行./configure,一定要加入-enable-fpm配置選項(xiàng)來(lái)激活FPM支持的
./configure
–prefix=/usr/local/php7.2.5 #安裝位置
–enable-mysqlnd #使用mysqlnd
–with-mysqli=mysqlnd #使用mysqli擴(kuò)展并使用mysqlnd官方驅(qū)動(dòng)程序
–with-pdo-mysql=mysqlnd #使用pdo mysql擴(kuò)展并使用mysqlnd官方驅(qū)動(dòng)程序
–with-iconv-dir=/usr/local/libiconv #使php支持iconv函數(shù),用于字符編碼強(qiáng)制轉(zhuǎn)換
–with-freetype-dir #打開(kāi)對(duì)freetype字體庫(kù)的支持
–with-jpeg-dir #打開(kāi)對(duì)jpeg圖片支持
–with-png-dir #打開(kāi)對(duì)png圖片支持
–with-zlib #打開(kāi)對(duì)zlib庫(kù)支持
–with-libxml-dir #打開(kāi)對(duì)libxml支持
–enable-xml #支持xml擴(kuò)展
–disable-rpath #關(guān)閉額外的運(yùn)行庫(kù)文件
–enable-bcmath #使用bcmath擴(kuò)展,打開(kāi)圖片大小調(diào)整,在zabbix監(jiān)控會(huì)用到
–enable-shmop
–enable-sysvsem
–enable-inline-optimization
–with-curl #打開(kāi)對(duì)curl工具的支持
–enable-mbregex
–enable-fpm #打上PHP-fpm 補(bǔ)丁后才有這個(gè)參數(shù),CGI方式安裝的啟動(dòng)程序
–enable-mbstring #多字節(jié)支持
–with-mcrypt=/usr/local/mcrypt #php7.2.5已廢棄此選項(xiàng)
–with-gd #對(duì)gd庫(kù)的支持
–enable-gd-native-ttf #php7.2.5已廢棄此選項(xiàng)
–with-openssl #對(duì)openssl的支持
–with-mhash #算法支持
–enable-pcntl # freeTDS需要用到的,可能是鏈接mysql用到
–enable-sockets #打開(kāi)socket的支持
–with-xmlrpc #打開(kāi)xml-rpc的c語(yǔ)言
–enable-soap
–enable-short-tags
–enable-static
–with-xsl #打開(kāi)XSLT 文件支持,擴(kuò)展了libXML2庫(kù) ,需要libxslt軟件
–with-fpm-user=www #運(yùn)行fpm的用戶
–with-fpm-group=www #運(yùn)行fpm的組名
–enable-ftp #打開(kāi)ftp的支持
–enable-opcache=no
其中與fpm有關(guān)的選項(xiàng)是:
–enable-fpm
–with-fpm-user=www 設(shè)置 FPM 運(yùn)行的用戶身份(默認(rèn)nobody)
–with-fpm-group=www 設(shè)置 FPM 運(yùn)行時(shí)的用戶組(默認(rèn)nobody)
–with-fpm-systemd 啟用 systemd 集成 (默認(rèn)no)
–with-fpm-acl 使用POSIX訪問(wèn)控制列表 (默認(rèn)no)
編譯前需要做link
[root@WebA-136 php-7.2.5]# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
[root@WebA-136 php-7.2.5]# touch ext/phar/phar.phar
[root@WebA-136 php-7.2.5]# make && make install
拷貝php.ini配置文件
[root@WebA-136 php]# cp /usr/local/src/php-7.2.5/php.ini-production /usr/local/php/lib/php.ini
[root@WebA-136 php]# cd /usr/local/php/etc/php-fpm.d
[root@WebA-136 php-fpm.d]# cp www.conf.default www.conf
[root@WebA-136 ~]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
啟動(dòng)php并查看
[root@iZ2ze4vbp6wu2etcksvay7Z php]# ./sbin/php-fpm
[root@iZ2ze4vbp6wu2etcksvay7Z php]# lsof -i :9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-fpm 7677 root 7u IPv4 261689 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 7678 www 0u IPv4 261689 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 7679 www 0u IPv4 261689 0t0 TCP localhost:cslistener (LISTEN)
[root@iZ2ze4vbp6wu2etcksvay7Z php]# netstat -anltup | grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 7677/php-fpm
[root@iZ2ze4vbp6wu2etcksvay7Z php]#
我安裝的是php7.2.5版本、linux是阿里云的服務(wù)器、nginx是1.14.2、mysql是5.6.40,過(guò)程中所遇到的問(wèn)題如下:
1.virtual memory exhausted: Cannot allocate memory,虛擬內(nèi)存用盡無(wú)法分配內(nèi)存。
查看內(nèi)存情況如下:
[root@iZ2ze4vbp6wu2etcksvay7Zphp]#free-m totalusedfreesharedbufferscached Mem:996895100053299 -/+buffers/cache:542453 Swap:000 [root@iZ2ze4vbp6wu2etcksvay7Zphp]#
解決方法:
[root@iZ2ze4vbp6wu2etcksvay7Zphp]#ddif=/dev/zeroof=/opt/swapbs=1024count=2048000 [root@iZ2ze4vbp6wu2etcksvay7Zphp]#mkswap/opt/swap [root@iZ2ze4vbp6wu2etcksvay7Zphp]#swapon/opt/swap 安裝完php后執(zhí)行 [root@iZ2ze4vbp6wu2etcksvay7Zphp]#swapoff/opt/swap
phpize的用法:手動(dòng)編譯安裝php的擴(kuò)展
增加pdo擴(kuò)展(我的已經(jīng)在安裝php的時(shí)候已經(jīng)增加此擴(kuò)展了)
首先進(jìn)去源碼包pdo目錄下
[root@iZ2ze4vbp6wu2etcksvay7Z ~]# cd /usr/local/src/php-7.2.5/ext/pdo
其次執(zhí)行/usr/local/php/bin/phpize生成配置文件
[root@iZ2ze4vbp6wu2etcksvay7Zpdo]#/usr/local/php/bin/phpize Configuringfor: PHPApiVersion:20170718 ZendModuleApiNo:20170718 ZendExtensionApiNo:320170718 [root@iZ2ze4vbp6wu2etcksvay7Zpdo]#
再使用生成的配置文件./configure –with-php-config=/usr/local/php/bin/php-config –enable-pdo=share
[root@iZ2ze4vbp6wu2etcksvay7Zpdo]#./configure--with-php-config=/usr/local/php/bin/php-config--enable-pdo=share
最后執(zhí)行make &&make install編譯安裝
[root@iZ2ze4vbp6wu2etcksvay7Zpdo]#make&&makeinstall
成功則出現(xiàn)
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
Installing header files: /usr/local/php/include/php/
Installing PDO headers: /usr/local/php/include/php/ext/pdo/
說(shuō)明在/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/目錄下生成了pdo.so文件.
增加pdo_mayslq((我的已經(jīng)在安裝php的時(shí)候已經(jīng)增加此擴(kuò)展了)),進(jìn)入源碼包pdo_mysql目錄下,執(zhí)行/usr/local/php/bin/phpize生成配置文件
[root@iZ2ze4vbp6wu2etcksvay7Zext]#cdpdo_mysql/ [root@iZ2ze4vbp6wu2etcksvay7Zpdo_mysql]#/usr/local/php/bin/phpize
再使用生成的配置文件–with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql
[root@iZ2ze4vbp6wu2etcksvay7Zpdo_mysql]#./configure–with-php-config=/usr/local/php/bin/php-config–with-pdo-mysql=/usr/local/mysql
最后make &&make install編譯安裝
[root@iZ2ze4vbp6wu2etcksvay7Zpdo_mysql]#make&&makeinstall
成功則出現(xiàn)
Installing shared extensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
至此在此目錄下已分別生成pdo.so文件和pdo_mysql.so文件.
最后切換到php安裝目錄下找到php.ini配置文件
[root@iZ2ze4vbp6wu2etcksvay7Z pdo_mysql]# vim /usr/local/php/lib/php.ini 增加兩行: extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/ extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/pdo.so
需要重啟php-fpm生效
FPM配置文件有php-fpm.conf和進(jìn)程池配置文件兩個(gè)。
[root@WebA-136php]#vimetc/php-fpm.conf 有全局配置段和線程池配置段兩部分組成。
全局配置部分:
pid = string | PID文件的位置。默認(rèn)為空 |
error_log = string | 錯(cuò)誤日志的位置。默認(rèn):#INSTALL_PREFIX#/log/php-fpm.log。 如果設(shè)置為 "syslog",日志將不會(huì)寫(xiě)入本地文件,而是發(fā)送到 syslogd。 |
log_level = string | 錯(cuò)誤級(jí)別。可用級(jí)別為:alert(必須立即處理),error(錯(cuò)誤情況),warning(警告情況),notice(一般重要信息),debug(調(diào)試信息)。默認(rèn):notice。 |
syslog.facility = string | 設(shè)置何種程序記錄消息,默認(rèn)值:daemon |
syslog.ident = string |
為每條信息添加前綴。 如果在同一臺(tái)服務(wù)器上運(yùn)行了多個(gè) FPM 實(shí)例,可以修改此默認(rèn)值來(lái)滿足需求。默認(rèn)值:php-fpm。 |
emergency_restart_threshold =int |
如果子進(jìn)程在 emergency_restart_interval 設(shè)定的時(shí)間內(nèi)收到該參數(shù)設(shè)定次數(shù)的 SIGSEGV 或者 SIGBUS退出信息號(hào),則FPM會(huì)重新啟動(dòng)。0 表示“關(guān)閉該功能”。默認(rèn)值:0(關(guān)閉)。 |
emergency_restart_interval =mixed |
emergency_restart_interval 用于設(shè)定平滑重啟的間隔時(shí)間。這么做有助于解決加速器中共享內(nèi)存的使用問(wèn)題。可用單位:s(秒),m(分),h(小時(shí))或者 d(天)。默認(rèn)單位:s(秒)。默認(rèn)值:0(關(guān)閉)。 |
process_control_timeout =mixed |
daemonize =boolean 設(shè)置 FPM 在后臺(tái)運(yùn)行。設(shè)置“no”將 FPM 保持在前臺(tái)運(yùn)行用于調(diào)試。默認(rèn)值:yes。 |
process.max =int | Fork的最大FPM進(jìn)程數(shù)。使用動(dòng)態(tài)管理進(jìn)程數(shù)時(shí),此設(shè)計(jì)可以控制在一個(gè)進(jìn)程池內(nèi)的全局進(jìn)程數(shù)量。使用需謹(jǐn)慎,默認(rèn)值:0。 |
process.priority =int | 設(shè)置master進(jìn)程的 nice(2) 優(yōu)先級(jí)(如果設(shè)置了此值)。 可以是 -19(最高優(yōu)先級(jí))到 20(更低優(yōu)先級(jí))。默認(rèn)值:不設(shè)置。 |
daemonize =boolean | 設(shè)置 FPM 在后臺(tái)運(yùn)行。設(shè)置“no”將 FPM 保持在前臺(tái)運(yùn)行用于調(diào)試。默認(rèn)值:yes。 |
rlimit_files =int | 設(shè)置master進(jìn)程的打開(kāi)文件描述符rlimit數(shù)。 |
rlimit_core =int | 設(shè)置master進(jìn)程最大core的rlimit尺寸,默認(rèn)值0。 |
events.mechanism =string | 設(shè)置FPM使用的事件機(jī)制??捎靡韵逻x項(xiàng):select、pool、epoll、kqueue (*BSD)、port (Solaris)。 默認(rèn)值:不設(shè)置(自動(dòng)檢測(cè)) |
systemd_interval =int | 使用systemd集成的FPM時(shí),設(shè)置間歇秒數(shù),報(bào)告健在通知給systemd。設(shè)置為0表示禁用。默認(rèn)值10 |
線程池配置部分http://php.net/manual/zh/install.fpm.configuration.php
第一個(gè)php程序hello world。
helloworld ';>
在瀏覽器輸入day/hello.php
此程序僅僅使用了php的echo語(yǔ)句顯示了hello world。
繼續(xù)從php獲取系統(tǒng)信息,如下
輸出正在使用的瀏覽器
echo$_SERVER['HTTP_USER_AGENT']; >
以及以下:
if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')!==FALSE){ echo'正在使用InternetExplorer。 '; } >
處理表單略過(guò)咯~