php經典
㈠ php是什麼意思
PHP(PHP: Hypertext Preprocessor)即「超文本預處理器」,是在伺服器端執行的腳本語言,尤其適用於Web開發並可嵌入HTML中。
PHP語法學習了C語言,吸納java和Perl多個語言的特色發展出自己的特色語法,並根據它們的長項持續改進提升自己,例如java的面向對象編程,該語言當初創建的主要目標是讓開發人員快速編寫出優質的web網站。 PHP同時支持面向對象和面向過程的開發,使用上非常靈活。
PHP特點:
PHP是一個受眾大並且擁有眾多開發者的開源軟體項目,linux + Nginx + Mysql + PHP是它的經典安裝部署方式,相關的軟體全部都是開源免費的,所以使用PHP可以節約大量的正版授權費用。
不過PHP作為一個開源軟體,它缺乏大型科技公司的支持背景,網路上對它的唱衰也是經久不衰,不過它的持續迭代和性能持續增強的現實卻是鼓舞人心的,PHP社區用實際行動給予各種質疑強有力的回擊。
㈡ 求經典PHP基礎教程
《PHP與MySQL程序設計》《 PHP web 2.0開發實戰》《 PHP高級程序設計:模式、框架與測試 》《PHP實戰》(PHP in Action) 《深入PHP面向對象、模式與實踐 (第2版) 》《PHP和MySQL Web開發原書第4版 》《 PHP經典實例(第二版)》《PHP技術內幕》《 PHP與MYSQL基礎教程 》
㈢ PHP語言的有哪些優勢和特點
優勢和特點:
1、執行速度快:PHP是一種強大的CGI腳本語言,語法混合了C、Java、Perl和PHP式的新語法,執行網頁比CGI、Perl和ASP更快,這是它的第一個突出的特點。
2、具有很好的開放性和可擴展性:PHP屬於自由軟體,其源代碼完全公開,任何程序員為PHP擴展附加功能非常容易。
3、資料庫支持:PHP支持多種主流與非主流的資料庫,如:、Adabas D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、MySQL、Microsoft SQL Server、Solid、Sybase、ODBC、oracle、oracle 8、PostgreSQL等。其中,PHP與MySQL是現在絕佳的組合,它們的組合可以跨平台運行。
4、面向對象編程:PHP提供了類和對象。為了實現面向對象編程,PHP4及更高版本提供了新的功能和特性,包括對象重載、引用技術等。
5、版本更新速度快:與數年才更新一次的ASP相比,PHP的更新速度就要快得多,因為PHP每幾周就更新一次。
6、具有豐富的功能:從對象式的設計、結構化的特性、資料庫的處理、網路介面應用、安全編碼機制等,PHP幾乎涵蓋了所有網站的一切功能。
7、可伸縮性:傳統上網頁的交互作用是通過CGI來實現的。CGI程序的伸縮性不很理想,因為它為每一個正在運行的CGI程序開一個獨立進程。
8、功能全面:php包括圖形處理、編碼與解碼、壓縮文件處理、xml解析、支持http的身份認證、cookie、 pop3 、snmp等。
(3)php經典擴展閱讀:
PHP的發展現狀:
PHP技術核心和相關的人才需求,正符合互聯網的發展趨勢。網站開發、API介面開發,伺服器端開發,移動端後台開發,內部OA系統開發,游戲開發等均用到PHP語言。
在IT行業和互聯網的飛速發展的時代,企業對PHP開發人員的需求也大幅增加,目前在國內專業的互聯網招聘網站,好多知名公司發布招聘PHP崗位,其中包括網易、京東、聯想、阿里巴巴、滴滴打車、美團、大眾點評、易到用車、網路、新浪、搜狐、奇虎、騰訊等。
㈣ Php經典框架之[DiliCMS]
優雅的 CodeIgniter
CodeIgniter 是一個小巧但功能強大的 PHP 框架,作為一個簡單而「優雅」的工具包,它可以為開發者們建立功能完善的 Web 應用程序。
web:http://codeigniter.org.cn/
github:https://github.com/bcit-ci/CodeIgniter
什麼是DiliCMS?
DiliCMS是開源的,面向CodeIgniter開發者的,自由靈活的後台系統,並致力於為開發者提供最簡單,易擴展,實用的後台系統。
web:http://www.dilicms.com/
感謝大神:119Gold蘇寧提供
㈤ 經典PHP筆試題
經典PHP筆試題
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。下面是整理的關於經典PHP筆試題,歡迎閱讀!
1.考慮如下腳本。標記處應該添加什麼代碼才能讓腳本輸出字元串php?
$alpha = 'abcdefghijklmnopqrstuvwxyz';
$letters = array(15, 7, 15);
foreach($letters as $val)
{/* 這里應該加入什麼 */
}?>
A.echo chr($val);
B.echo asc($val);
C.echo substr($alpha, $val, 2);
D.echo $alpha{$val};
E.echo $alpha{$val+1}
答案解析:substr 函數能夠勝任,但考慮到輸出三個字母就需要三次調用該函數,所以排除此方法。那麼$alpha{$val}和$alpha{$val+1}是僅有的兩個可能輸出題目要求的字元串的選項。因為 0 是數
組的第一個索引,所以答案是 D。
2. 以下哪一項不能把字元串$s1 和$s2 組成一個字元串?
A.$s1 + $s2
B.”{$s1}{$s2}”
C.$s1.$s2
D.implode(”, array($s1,$s2))
E.以上都可以
答案解析:除 A 以外的選項都能輸出題目要求的字元串。PHP中,加號+不能把兩個字元串合並成一個。
3. 變 量 $email 的 值 是 字 符 串 [email protected] , 以 下 哪 項 能 把 字 符 串 轉 化 成example.com?
A.substr($email, strpos($email, “@”));
B.strstr($email, “@”);
C.strchr($email, “@”);
D.substr($email, strpos($email, “@”)+1);
E.strrpos($email, “@”);
答案解析:substr 函數返回字元串的一部分,而 strpos 函數擅長從一個字元串中找出某個指定的子串。同時使用這兩個函數將滿足題目要求。注意,前一個函數從 0 開始索引,而後者不是,因此需
要+1。答案是 D。
4. 給定一個用逗號分隔一組值的字元串,以下哪個函數能在僅調用一次的情況下就把每個獨立的值放入一個新創建的數組?
A.strstr()
B.不可能只調用一次就完成
C.extract()
D.explode()
E.strtok()
答案解析:答案是 D。explode 函數使用一個字元串分隔另一個字元串,並把結果放入一個新建的數組。strtok 函數也可以做同樣的事,但需要多次調用。
5. 要比較兩個字元串,以下那種方法最萬能?
A.用 strpos 函數
B.用==操作符
C.用 strcasecmp()
D.用 strcmp()
答案解析:答案是 D。strcmp()提供了安全的字元串比較機制。注意,選項 C 是錯的,strcasecmp()不是一個“萬能”函數,因為它不區分大小寫。
6. 以下哪個 PCRE 正則表達式能匹配字元串 php|architect?
A..*
B.…|………
C.d{3}|d{8}
D.[az]{3}|[az]{9}
E.[a-z][a-z][a-z]|w{9}
答案解析:選項中沒有一個正則表達式能真正代表題目所給字元串的匹配方式,但是選項 A 和 E仍然能勉強匹配。選項 A 太普通了,它能夠匹配任何字元串,因此答案是 E。
7. 以下哪些函數能用來驗證字元串的完整性?(三選)
A.md5()
B.sha1()
C.str_rot13()
D.crypt()
E.crc32()
答案解析:正確答案是 A,B 和 E。用 crypt()和 str_rot13()來驗證一個字元串是否被改變,效率很低。crc32()比前面兩個函數好些,如果能容忍一些小錯誤的話,它是個不錯的選擇。
8. 哪個 PHP 函數與以下腳本在 UNIX 系統下執行的效果近似?
function my_funct ($filename)
{
$f = file_get_contents ($filename);
return explode (" ", $f);
}
?>
A.fopen()
B.fread()
C.flock()
D.split_string()
E.file()
答案解析:正確答案是 A,B 和 E。用 crypt()和 str_rot13()來驗證一個字元串是否被改變,效率很低。crc32()比前面兩個函數好些,如果能容忍一些小錯誤的話,它是個不錯的選擇。
9. 基於指定的式樣(pattern)把一個字元串分隔開並放入數組,以下哪些函數能做到?(雙
選)
A.preg_split()
B.ereg()
C.str_split()
D.explode()
E.chop()
答案解析:盡管條件不同,但 preg_split 和 explode 函數都能滿足題目要求。ereg()拿一個正則表達式匹配一個字元串;str_split()按固定長度分隔字元串;而 chop()則是 rtrim()別名,用來移除
字元串末尾處的空格。
10.以下腳本輸出什麼?
echo 'Testing ' . 1 + 2 . '45';
?>
A.Testing 1245
B.Testing 345
C.Testing 1+245
D.245
E.什麼都沒有
答案解析:本題考察你對字元串操作及操作符優先順序的認識。連接運算符(.)的優先順序比加號(+)高。因此 PHP 解釋器實際執行的運算可以表示為(‘Testing’ . 1) + (2 . ‘45’)。由於字元串
test 1 不是數字,所以加號前面的運算等於 0。加號後面的運算等於 245,PHP 輸出的'結果是 0+245,等於 245,所以答案是 D。
11.以下腳本輸出什麼?
$s = '12345';
$s[$s[1]] = '2';
echo $s;
?>
A.12345
B.12245
C.22345
D.11345
E.Array
答案解析:可以用訪問數組元素的方式訪問字元串中的字元,因此腳本只是把字元串中的第二個字元($s[1])替換成了字元 2,最終將輸出 12245。答案是 B。
12.方框中的正則表達式能與以下哪些選項匹配?(雙選)
/.**123d/
A.******123
B.*****_1234
C.******1234
D._*1234
E._*123
答案解析:本題的要點是理解這個正則表達式的含義——從左往右,首先是零個或多個任意字元(.*),跟著是一個星號(*),然後是 123,最後是一個數字。因此答案是 C 和 D。
13.以下哪個比較將返回 true?(雙選)
A.‘1top’ == ‘1’
B.‘top’ == 0
C.‘top’ === 0
D.‘a’ == a
E.123 == ‘123’
答案解析:B 和 E 正確。選項 B 中,在比較時,字元串 top 等同於數字 0。==操作符不比對數據類型,所以將返回 true。答案 E 中,字元串 123 等同於數字 123,比較將返回 true。
14.如果用+操作符把一個字元串和一個整型數字相加,結果將怎樣?
A.解釋器輸出一個類型錯誤
B.字元串將被轉換成數字,再與整型數字相加
C.字元串將被丟棄,只保留整型數字
D.字元串和整型數字將連接成一個新字元串
E.整形數字將被丟棄,而保留字元串
答案解析:字元串將被轉換成數字(如果無法發生轉換就是 0),然後與整型數字相加。答案是 B。
15.考慮如下腳本。假設 http://www.php.net 能被訪問,腳本將輸出什麼?
$s = file_get_contents ("http://www.php.net");
strip_tags ($s, array ('p'));
echo count ($s);
?>
A.www.php.net 的主頁的字元數
B.剔除標簽後的 www.php.net 主頁的字元數
C.1
D.0
E.剔除以外的標簽後的 www.php.net 主頁的字元數
答案解析:代碼的本意是剔除 www.php.net 主頁上除了 p 以外的的所有 HTML 標簽。可實際上,在代碼的最後一行使用了 count 函數,它統計變數中的元素數量,而不是字元串中的字元數。由於字元
串是標量,對字元串使用 count 函數將永遠返回 1。答案是 C。
16.哪個函數能不區分大小寫得對兩個字元串進行二進制比對?
A.strcmp()
B.stricmp()
C.strcasecmp()
D.stristr()
E.以上都不能
答案解析:題目其實就是在描述 strcasecmp 函數的作用,因此答案是 C。
17.以下哪些函數能把字元串里存儲的二進制數據轉化成十六進制?(雙選)
A.encode_hex()
B.pack()
C.hex2bin()
D.bin2hex()
E.printf()
答案解析:正確答案是 B 和 D。pack 函數能對二進制數據進行復雜的格式化,包括將字元串中的字元轉化成十六進製表示。bin2hex 函數也有同樣的轉化功能。注意,printf()能將整數轉化成十六進
制數,但無法轉化字元串。
18.哪個函數能用來確保一個字元串的字元數總是大於一個指定值?
答案解析:這是在說 str_pad 函數,它可以把字元串填充到指定長度。
19.以下腳本輸出什麼?
echo wordwrap ($a, 1, "c", false);
?>
答案解析:腳本將輸出 ablecostscindy。wordwrap 函數通常用來把字元串切割成指定長度。然而在本題中,長度被設置為 1,因此函數將從空格處切割(第四個參數被設置為 false,因此函數不會從
單詞的中間進行切割)。填充字元串是 c,等於把每個空格都換成了 c。
20.以下腳本輸出什麼?
echo substr_replace ($x, 'x', 1, 2);
?>
A.x
B.axle
C.axxle
D.applex
E.xapple
答案解析:腳本將輸出 ablecostscindy。wordwrap 函數通常用來把字元串切割成指定長度。然而在本題中,長度被設置為 1,因此函數將從空格處切割(第四個參數被設置為 false,因此函數不會從
單詞的中間進行切割)。填充字元串是 c,等於把每個空格都換成了 c。
;㈥ 10 個經典PHP函數
1.
sys_getloadavg()
sys_getloadavt()可以獲得系
統負載情況。該函數返回一個包含三個元素的數組,每個元素分別代表系統再過去的1、5和15分鍾內的平均負載。
與其讓伺服器因負
載過高而宕掉,不如在系統負載很高時主動die掉一個腳本,sys_getloadavg()就是用來幫你實現這個功能的。
不過很遺憾,該函數在windows下無效。
2.
pack()
Pack()
能將md5()返回的32位16進制字元串轉換為16位的二進制字元串,可以節省存儲空間。
3.
cal_days_in_month()
cal_days_in_month()能夠返回指定月份共有多少天。
4.
_()
WordPress開發者經常能見到這個函數,還有
_e()。這兩個函數功能相同,與gettext()函數結合使用,能實現網站的多語言化。具體可參見PHP手冊的相關部分介紹。
5.
get_browser()
在發送頁面前先看看用戶的瀏覽器都能做些什麼是
不是挺好?get_browser()能獲得用戶的瀏覽器類型,以及瀏覽器支持的功能,不過首先你需要一個php_browscap.ini文件,用來給
函數做參考文件。
要注意,該函數對瀏覽器功能的判斷是基於該類瀏覽器的一般特性的。例如,如果用戶關閉了瀏覽器對
JavaScript的支持,函數無法得知這一點。但是在判斷瀏覽器類型和OS平台方面,該函數還是很准確的。
6.
debug_print_backtrace()
這是一個調試用的函數,能幫助你發現代碼中的邏輯錯誤。要理
解這個函數,還是直接看個例子吧:
$a
=
0;
function
iterate()
{
global
$a;
if(
$a
<
10
)
recur();
echo
$a
.
「,
「;
}
function
recur()
{
global
$a;
$a++;
//
how
did
I
get
here?
echo
「\n\n\n」;
debug_print_backtrace();
if(
$a
<
10
)
iterate();
}
iterate();
#
OUTPUT:
#0
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#1
iterate()
called
at
[C:\htdocs\php_stuff\index.php:25]
#0
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#1
iterate()
called
at
[C:\htdocs\php_stuff\index.php:21]
#2
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#3
iterate()
called
at
[C:\htdocs\php_stuff\index.php:25]
#0
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#1
iterate()
called
at
[C:\htdocs\php_stuff\index.php:21]
#2
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#3
iterate()
called
at
[C:\htdocs\php_stuff\index.php:21]
#4
recur()
called
at
[C:\htdocs\php_stuff\index.php:8]
#5
iterate()
called
at
[C:\htdocs\php_stuff\index.php:25]
7.
metaphone()
這個函數返回單詞的metaphone值,相同讀音的單詞具有相同的metaphone值,也就是說這個函數可以幫你判斷兩個單詞的讀音是否
相同。不過對中文就無效了。。。
8.
natsort()
natsort()能將一個數組以自然排序法
進行排列,直接看個例子吧:
$items
=
array(
「100
apples」,
「5
apples」,
「110
apples」,
「55
apples」
);
//
normal
sorting:
sort($items);
print_r($items);
#
Outputs:
#
Array
#
(
#
[0]
=>
100
apples
#
[1]
=>
110
apples
#
[2]
=>
5
apples
#
[3]
=>
55
apples
#
)
natsort($items);
print_r($items);
#
Outputs:
#
Array
#
(
#
[2]
=>
5
apples
#
[3]
=>
55
apples
#
[0]
=>
100
apples
#
[1]
=>
110
apples
#
)
9.
levenshtein()
Levenshtein()
告訴你兩個單詞之間的「距離」。它告訴你如果想把一個單詞變成另一個單詞,需要插入、替換和刪除多少字母。
看個例子吧:
$dictionary
=
array(
「php」,
「javascript」,
「css」
);
$word
=
「japhp」;
$best_match
=
$dictionary[0];
$match_value
=
levenshtein($dictionary[0],
$word);
foreach($dictionary
as
$w)
{
$value
=
levenshtein($word,
$w);
if(
$value
<
$match_value
)
{
$best_match
=
$w;
$match_value
=
$value;
}
}
echo
「Did
you
mean
the
『$best_match'
category?」;
10.
glob()
glob()會讓你覺得用
opendir(),
readdir()和closedir()來尋找文件非常蠢。
foreach
(glob(「*.php」)
as
$file)
echo
「$file\n」;
㈦ 求《PHP經典實例第三版》全文免費下載百度網盤資源,謝謝~
《PHP經典實例第三版》網路網盤pdf最新全集下載:
鏈接:
簡介:各個技巧都提供了示例代碼,可以免費使用,另外還討論了如何解決問題以及這些解決方案為什麼可行。不論你是經驗豐富的PHP程序員,還是剛從其他語言轉到PHP,本書都是一個理想的實用資源。
《PHP經典實例(第3版)》提供的技巧包括:
基本數據類型:字元串、數字、數組和日期時間。
程序構建模塊:變數、函數、類和對象。
Web編程:cookie、表單、會話和認證。
使用PDO、SQLite和其他擴展訪問資料庫。
RESTfulAPI客戶端和伺服器,包括HTTP、XML和OAuth。
重要概念:email、正則表達式和圖形創建。
設計健壯的應用:安全和加密、錯誤處理、調試和測試,以及性能調優。
文件、目錄和PHP的命令行介面。
庫和包管理器,如Composer和PECL。
㈧ php是什麼意思
php通常指超文本預處理器,用於面向對象、命令式編程,是一種通用開源腳本語言。
主要特點:
為開源性和免費性、快捷性、資料庫連接的廣泛性、面向過程和面向對象並用。優點是利於學習,使用廣泛。此外,php還可以指菲律賓比索的標准貨幣代碼符號,MPLS網路中的倒數第二跳彈出功能。是英文超級文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種HTML 內嵌式的語言,是一種在伺服器端執行嵌入HTML文檔的腳本語言,語言風格有些類似於C語言,被廣泛的運用。
簡介:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
特性包括:
1、PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法
2、PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;PHP具有非常強大的功能,所有的CGI的功能PHP都能實現
3、 PHP支持幾乎所有流行的資料庫以及操作系統。
4、最重要的是PHP可以用C、C++進行程序的擴展!
語言特點:
開源免費
PHP是一個受眾大並且擁有眾多開發者的開源軟體項目,Linux + Nginx + Mysql + PHP是它的經典安裝部署方式,相關的軟體全部都是開源免費的,所以使用PHP可以節約大量的正版授權費用。不過PHP作為一個開源軟體,它缺乏大型科技公司的支持背景,網路上對它的唱衰也是經久不衰,不過它的持續迭代和性能持續增強的現實卻是鼓舞人心的,PHP社區用實際行動給予各種質疑強有力的回擊。
快捷高效
PHP的內核是C語言編寫的基礎好效率高,可以用C語言開發高性能的擴展組件;PHP的核心包含了數量超過1000的內置函數,功能應有盡有很全面,開箱即用程序代碼簡潔; PHP數組支持動態擴容,支持以數字、字元串或者混合鍵名的關聯數組,能大幅提高開發效率; PHP是一門弱類型語言,程序編譯通過率高,相對其他強類型語言開發效率快;PHP天然熱部署,在php-fpm運行模式下代碼文件覆蓋即完成熱部署;PHP經過20多年的發展,在互聯網上可以搜到海量的參考資料供參考學習。
性能提升
PHP版本越高它的整體性能越高,根據官方介紹,PHP7.0.0 對比PHP5.6性能就提升了2倍,PHP7.4已經比PHP7.0快了約30%,PHP8.0在性能上又相對PHP7.4大約改進了10%。PHP 8.0 引入了 JIT編譯器特性,同時加入多種新的語言功能,例如命名參數、聯合類型、註解、Constructor Property Promotion、match 表達式、nullsafe 運算符以及對類型系統、錯誤處理和一致性的改進。PHP擁有自己的核心開發團隊,保持5年發布一個大版本、1個月發布2個小版本的頻率,最新的版本是PHP8.08 。
跨平台
每個平台都有對應的php解釋器版本,指針對不同平台均編譯出目標平台的二進制碼(PHP解釋器),php開發的程序可以不經修改運行在windows、linux、unix等多個操作系統上。
常駐內存
php-cli模式下可以實現程序常駐內存,各種變數和資料庫連接都能長久保存在內存實現資源復用,比較常用的做法是結合swoole 組件編寫cli框架。
頁面生命周期
在php-fpm模式下,所有的變數都是頁面級的,無論是全局變數還是類的靜態成員,都會在頁面執行完畢後被清空,對程序員水平要求低,佔用內存非常少,特別適合中小型系統的開發。
運行機制:
PHP常見的運行模式有2種,分別是php-fpm 和php-cli 。當PHP 選擇運行在php-fpm模式下,所有的變數都是頁面級的,無論是全局變數還是類的靜態成員,都會在頁面執行完畢後被清空。運行在php-cli模式下可以實現程序常駐內存,各種變數和資料庫連接都能長久保存在內存 實現資源復用,性能可以得到很大的提升,php-cli開發比較復雜能但是能夠獲取更高的性能,對開發者的要求比較高需要比較高的開發水平,比較常用的模式是結合swoole 組件編寫cli框架,各種變數能保存在跨進程的高性能共享內存 Table ,可以開發出支持熱啟動的php-cli可靠各類應用系統。
php-fpm在PHP 5.3.3 版本成為了官方正式組件(2010-07-22),它提供了穩定可靠的進程管理服務,進程不足時候可以智能擴充數量,閑置時候可以自動回收銷毀多餘的進程,同時它對程序的容錯能力很強大運行非常穩定,可以應付企業級的開發需求。php-fpm友好的完成了使用HTTP/HTTPS等TCP/IP互聯網協議下進行的用戶的輸入輸出,頁面級生命周期各種資源用完即釋放,不存在內存泄漏的問題。php-fpm也提供有一些常駐內存的技術支持,例如PHP 7.4引入的opcache.preload也能實現局部的PHP類和函數的常駐內存,不過這個方法不夠靈活,和伺服器配置捆綁的太死了。
php-cli因為能實現各類資源的常駐內存,所以可以資源復用,更高效完成多進程編程和非同步編程,可以開發出負載能力更高的應用系統。但是相對php-fpm的簡單編程開發,開發者要注意很多的事項和需要做很多附加的控制器開發,否則就無法實現期待中的高性能。
首先開發者需要去實現可靠的進程管理服務,保證系統進程遇到各類錯誤退出運行後能夠自動創建新的進程,只有這樣才能保證後續的服務請求有足夠空閑進程可分配。每個業務代碼段都要做異常處理,讓進程遇到非致命錯誤時候不會退出,因為進程重啟意味程序和各類資源需要再次載入,這個過程性能消耗不小,所以只有進程穩定運行了常駐內存才有意義。
其次因為常駐內存,編寫的新的程序必須重啟服務才能生效,這一點習慣了fpm模式的開發者會感到比較陌生。另外開發者需要手工釋放內存,否則系統長時間運行後會出現內存泄露。同時在cli模式下,我們不能像fpm里直接用 $_SERVER、$_POST、$_GET、$_COOKI和$_FILES 進行編程工作,需要自己去解析各種互聯網通訊協議完成用戶的輸入輸出。要實現多進程編程利用多核CPU計算,還有學習使用pcntl和posix編程,這里涉及到了非同步編程邏輯,這塊難度還是比較大的。比較常用的模式是結合swoole 組件編寫cli框架。
PHP是一個活躍的社區開發語言,有專業的核心開發團隊在持續不斷的迭代,最近一個版本就是PHP 8.0.8 引入了很多的新特性。
語言參考:
內置函數
PHP 有很多標準的函數和結構。還有一些函數需要和特定的擴展模塊一起編譯,否則在使用它們的時候就會得到一個致命的「未定義函數」錯誤。例如,要使用 image 函數中的 imagecreatetrue,需要在編譯 PHP 的時候加上 GD 的支持。或者要使用 mysqli_connect函數,就需要在編譯 PHP 的時候加上 MySQLi 支持。有很多核心函數已包含在每個版本的 PHP 中如字元串和變數函數。調用 phpinfo或者 get_loaded_extensions可以得知 PHP 載入了那些擴展庫。同時還應該注意,很多擴展庫默認就是有效的。
靜態網站與動態網站的區別
靜態網站:web1.0 時代
動態網站:web2.0 時代
靜態網站特點:
1、網頁內容一經發布到網站伺服器,無論是否有用戶訪問,每個靜態頁面的內容都是保存在網站伺服器上的。也就是說,靜態網頁是實實在在保存在伺服器上的文件,每個網頁都是一個獨立的文件。
2、靜態網頁的內容相對穩定,因此容易被搜索引擎檢索。
3、 靜態網頁沒有資料庫的支持,在網站製作和維護方面工作量較大,因此當網站信息量很大時完全依靠靜態網頁製作方式比較困難。
4、靜態網頁的交互性較差,在功能方面有較大的限制。
㈨ php書籍推薦
關注PHP的人越來越多了,可惜國內PHP5方面的好書還非常少,幾乎可以說沒有。
PHP4即將是明日黃花,所以學PHP最好直接學PHP5。下面是我認為比較好的PHP5書籍:
1. Core PHP Programming, 3rd Edition
這本書是PHP專家Leon Atkinson和PHP創始人之一Zeev Suraski合著的。國內有
第2版,講PHP4的,但這本第3版還買不到。學校圖書館有一本原版,可惜只有一本
(現在在我手裡,咔咔)。講得非常全面,做為Web編程方面的知識,幾乎全部包括
了。最有價值的是Part 4,講Software Enginerring的,介紹了設計、效率與調試,
還介紹了四種最常用的設計模式,非常有參考價值。可惜畢竟是03年的書,那時候
PHP5還在開發中,所以裡面有一些內容並不完全適合現在的PHP5,比如名字空間(
PHP5並不支持名字空間)。不過瑕不掩瑜,做為PHP5的一本綜合書籍,這本書非常
經典,可以用於入門,也可以用於提高。
2. PHP5 Power Programming
這本書是PHP的另一創始人Andi Gutmans寫的,專門針對PHP5。個人感覺這本書
不適合學習,但很適合提高時參考。裡面花了大量篇幅講述PHP5的面向對象機制,
不過基本上跟Core PHP Programming重復,所以看過Core後再看這些將很快,可以
當成溫故一遍。還有一章介紹了PHP5里的高級面向對象特性,如迭代器,反射API(
Reflection API,在其它面向對象語言里稱自省),也介紹了設計模式。
可惜的是,跟上面一本書一樣,都是只講PHP特性的書,具體到PHP高級應用的
實戰講得感覺比較欠缺,像MVC模式,兩本書都沒講到,而這些對PHP高級編程來說是
非常重要的。比較令人安慰的是這本書還介紹了很多PHP高級特性,像PEAR包,APC,
APD,Xdebug,還有Zend Studio的使用,等等,這些還是非常有價值的。
總之,這是一本很適合提高時使用的書籍,跟Core一樣,也是PHP書籍中的經典。
3. PHP and MySQL Web Development, 3rd Edition
這是國內唯一能買到的PHP5書籍,中文翻譯,但翻譯質量不怎麼樣,有些句子
讀起來莫名其妙。這本書比較適合初中級的PHP學習,而且非常實際,有很多基本應
用的實例,很適合入門。除了資料庫知識很不錯外,裡面也講到了使用PHP和MySQL
開發中等項目時所需要考慮到的問題,介紹了很多基本的軟體項目管理方法,非常
實用。後面幾章是一些實例,介紹了購物車(我最不喜歡這東西),郵件列表,內容
管理系統和論壇的編寫,不過都只是基礎,沒有高級技巧,所以看起來會覺得很不舒
服,呵呵。
裡面有一張泛泛地講到了電子商務安全,可以參考下。個人感覺相當不錯的內容
是MySQL部分,基本涵蓋了資料庫基礎和MySQL基礎及高級特性,但限於篇幅,沒有去
講得很深入,權當是入門指引了。
因為是國內能買到的,所以很多人可能會喜歡從這本書開始學PHP5,我覺得也不
錯。總之很推薦這本書。
4. Essential PHP Security
這是一本講述PHP編碼安全的書,非常需要引起PHP開發人員的重視。我覺得這是
一本必讀書籍,讀過後會讓你冒冷汗。現在注重安全編碼的人實在太少了,對於一個
專業的PHP程序員,PHP安全特性絕對要爛熟於胸,而這本書就提供了一個非常好的視
角。
5. PHP Architect's Guide to PHP Design Patterns
這本書我正在看,對於PHP5面向對象的學習絕對非常有幫助。裡面介紹了非常多
的設計模式,直接以PHP語言實現出來,可以讓你一步到位使用模式思想。第17章介
紹了PHP里的MVC模式,可以說是帶了個好頭,很有參考價值。
由於還沒看完,所以不敢多評價,但可以肯定的是,這本書對於學PHP5面向對象
高級編程的人來說是絕對必備的。
國內有中文版,phpchina社區翻譯的,可以下載過來參考下。另外,好像關於
PHP設計模式的書又出了一本,叫做《PHP5: Objects, Patterns and Practice》,
可惜我Google了半天也找不到下載地址,只能作罷了,希望以後能找到。可以肯定這
又將是一本讓人振奮的書。
又將是一本讓人振奮的書。
最後想說明的是,Oreilly的PHP書就不用看了,包括PHP創始人Rasmus Lerdorf寫的
《Programming PHP》(現在好像出第2版了),講得東西基本上全是PHP手冊里的東
西,沒必要重復浪費時間。像《Learning PHP5》,《PHP Cookbook》之類,說實話
我個人感覺真的只是PHP手冊的子集。最近好像又出了本同樣可以看成是子集的書,
書名是《Learning PHP and MySQL》,看了一眼就沒看了。不是對Oreilly有偏見,
只是因為它的書全是入門級的,沒什麼含金量,屬於看過就扔的那種。想想K&R的
《The C Programming Language》吧,呵呵。
最最後想說明的是,PHP手冊,一定要反復看!這個是學PHP最重要的參考資料,每個
人都應該有一本以備不時之需。有中文翻譯版的,不過裡面的鏈接有錯誤,看起來不
是很方便,但多摸索幾次就能把鏈接弄對了。
大概就講這些了,只是我個人觀點,希望大家指點批評,共同進步。
㈩ 《PHP程序設計經典300例》pdf下載在線閱讀全文,求百度網盤雲資源
《PHP程序設計經典300例》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1rpjBoUpgfEj27M_z0Vk74A
簡介:PHP是當今使用最為廣泛的伺服器腳本語言,本書的架構基於PHP+Web 2.0,涵蓋了頁面動態特效展示、伺服器頁面渲染到資料庫應用等所有主流應用,讀者通讀此書後即可實現簡單的Web前端入門實踐。