php互聯網,php互聯網工程師考證資料

本文目錄一覽:

PHP可以做什麼

PHP可以做什麼

PHP屬於後起之秀,吸收了java和c以及perl等語言優點,專註互聯網領域。WEB領域PHP擁有得天獨厚的優勢,WEB領域沒有語言可以和他比。將來一定是互聯網的天下。互聯網離不開WEB,WEB離不開PHP。那麼PHP可以做什麼?一起來看看PHP的用途吧!

PC端網站開發

60%全球互聯網網站採用php技術,80%國內互聯網網站使用php開發。這些網站包含購物網站,政府企業網站,QQ空間,論壇博客等等。

移動端微網站開發

移動設備的普及為移動互聯網的快速發展奠定了基礎!手機淘寶網站,手機京東網站等等, 微信公眾號應用中的微網站。 將來微網站和公眾號肯定會取代APP的地位!

APP後台開發

APP後台開發也是移動互聯網發展的一個產物。大多數網站為了讓用戶在手機上能夠得到更好體驗效果,都加入開發APP的開發行列中。而PHP後端技術將會作為他們的不二選擇。

PHP主要用來做網站開發,許多小型網站都用PHP開發,PHP是開源的,這是使得PHP經久不衰的原因。在電商、社區等方面,PHP具備非常成熟的開源代碼和模板,因此使得PHP應用極為廣泛。

php-fpm的安裝目錄

下面是我的平時的環境搭建php的各種安裝目錄,大家的基本也差不多。

centos等linux平台

1./usr/local/php/php

2./usr/local/php/etc/php.ini

3./usr/local/php/sbin/php-fpm

4./usr/local/php/etc/php-fpm.conf

mac平台

1./usr/bin/php

2./etc/php.ini

3./usr/bin/php-fpm

4./etc/php-fpm.conf

由於我開發以Mac為主,所以就用Mac的環境配置來學習。

php-fpm配置詳解

這是搜索的一份還算算比較詳細的php-fpm.conf配置詳解,我會針對性的修改下,當然php手冊上也有詳細的講解:

1.pid = /usr/local/var/run/php-fpm.pid

2.#pid設置,一定要開啟,上面是Mac平台的。默認在php安裝目錄中的var/run/php-fpm.pid。比如centos的在: /usr/local/php/var/run/php-fpm.pid

3.

4.error_log  = /usr/local/var/log/php-fpm.log

5.#錯誤日誌,上面是Mac平台的,默認在php安裝目錄中的var/log/php-fpm.log,比如centos的在: /usr/local/php/var/log/php-fpm.log

6.

7.log_level = notice

8.#錯誤級別. 上面的php-fpm.log紀錄的登記。可用級別為: alert(必須立即處理), error(錯誤情況), warning(警告情況), notice(一般重要信息), debug(調試信息). 默認: notice.

9.

10.emergency_restart_threshold = 60

11.emergency_restart_interval = 60s

12.#表示在emergency_restart_interval所設值內出現SIGSEGV或者SIGBUS錯誤的php-cgi進程數如果超過 emergency_restart_threshold個,php-fpm就會優雅重啟。這兩個選項一般保持默認值。0 表示 ‘關閉該功能’. 默認值: 0 (關閉).

13.

14.process_control_timeout = 0

15.#設置子進程接受主進程復用信號的超時時間. 可用單位: s(秒), m(分), h(小時), 或者 d(天) 默認單位: s(秒). 默認值: 0.

16.

17.daemonize = yes

18.#後台執行fpm,默認值為yes,如果為了調試可以改為no。在FPM中,可以使用不同的設置來運行多個進程池。 這些設置可以針對每個進程池單獨設置。

19.

20.listen = 127.0.0.1:9000

21.#fpm監聽端口,即nginx中php處理的地址,一般默認值即可。可用格式為: ‘ip:port’, ‘port’, ‘/path/to/unix/socket’. 每個進程池都需要設置。如果nginx和php在不同的機器上,分布式處理,就設置ip這裡就可以了。

22.

23.listen.backlog = -1

24.#backlog數,設置 listen 的半連接隊列長度,-1表示無限制,由操作系統決定,此行注釋掉就行。backlog含義參考:

25.

26.listen.allowed_clients = 127.0.0.1

27.#允許訪問FastCGI進程的IP白名單,設置any為不限制IP,如果要設置其他主機的nginx也能訪問這台FPM進程,listen處要設置成本地可被訪問的IP。默認值是any。每個地址是用逗號分隔. 如果沒有設置或者為空,則允許任何服務器請求連接。

28.

29.listen.owner = www

30.listen.group = www

31.listen.mode = 0666

32.#unix socket設置選項,如果使用tcp方式訪問,這裡注釋即可。

33.

34.user = www

35.group = www

36.#啟動進程的用戶和用戶組,FPM 進程運行的Unix用戶, 必須要設置。用戶組,如果沒有設置,則默認用戶的組被使用。

37.

38.pm = dynamic

39.#php-fpm進程啟動模式,pm可以設置為static和dynamic和ondemand

40.#如果選擇static,則進程數就數固定的,由pm.max_children指定固定的子進程數。

41.

42.#如果選擇dynamic,則進程數是動態變化的,由以下參數決定:

43.pm.max_children = 50 #子進程最大數

44.pm.start_servers = 2 #啟動時的進程數,默認值為: min_spare_servers + (max_spare_servers – min_spare_servers) / 2

45.pm.min_spare_servers = 1 #保證空閑進程數最小值,如果空閑進程小於此值,則創建新的子進程

46.pm.max_spare_servers = 3 #,保證空閑進程數最大值,如果空閑進程大於此值,此進行清理

47.

48.pm.max_requests = 500

49.#設置每個子進程重生之前服務的請求數. 對於可能存在內存泄漏的第三方模塊來說是非常有用的. 如果設置為 ‘0’ 則一直接受請求. 等同於 PHP_FCGI_MAX_REQUESTS 環境變量. 默認值: 0.

50.

51.pm.status_path = /status

52.#FPM狀態頁面的網址. 如果沒有設置, 則無法訪問狀態頁面. 默認值: none. munin監控會使用到

53.

54.ping.path = /ping

55.#FPM監控頁面的ping網址. 如果沒有設置, 則無法訪問ping頁面. 該頁面用於外部檢測FPM是否存活並且可以響應請求. 請注意必須以斜線開頭 (/)。

56.

57.ping.response = pong

58.#用於定義ping請求的返回相應. 返回為 HTTP 200 的 text/plain 格式文本. 默認值: pong.

59.

60.access.log = log/$pool.access.log

61.#每一個請求的訪問日誌,默認是關閉的。

62.

63.access.format = “%R – %u %t \”%m %r%Q%q\” %s %f %{mili}d %{kilo}M %C%%”

64.#設定訪問日誌的格式。

65.

66.slowlog = log/$pool.log.slow

67.#慢請求的`記錄日誌,配合request_slowlog_timeout使用,默認關閉

68.

69.request_slowlog_timeout = 10s

70.#當一個請求該設置的超時時間後,就會將對應的PHP調用堆棧信息完整寫入到慢日誌中. 設置為 ‘0’ 表示 ‘Off’

71.

72.request_terminate_timeout = 0

73.#設置單個請求的超時中止時間. 該選項可能會對php.ini設置中的’max_execution_time’因為某些特殊原因沒有中止運行的腳本有用. 設置為 ‘0’ 表示 ‘Off’.當經常出現502錯誤時可以嘗試更改此選項。

74.

75.rlimit_files = 1024

76.#設置文件打開描述符的rlimit限制. 默認值: 系統定義值默認可打開句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。

77.

78.rlimit_core = 0

79.#設置核心rlimit最大限制值. 可用值: ‘unlimited’ 、0或者正整數. 默認值: 系統定義值.

80.

81.chroot =

82.#啟動時的Chroot目錄. 所定義的目錄需要是絕對路徑. 如果沒有設置, 則chroot不被使用.

83.

84.chdir =

85.#設置啟動目錄,啟動時會自動Chdir到該目錄. 所定義的目錄需要是絕對路徑. 默認值: 當前目錄,或者/目錄(chroot時)

86.

87.catch_workers_output = yes

88.#重定向運行過程中的stdout和stderr到主要的錯誤日誌文件中. 如果沒有設置, stdout 和 stderr 將會根據FastCGI的規則被重定向到 /dev/null . 默認值: 空.

當然還有一些無關緊要的設置,用到了再說吧。

一些重要的設置

php-fpm進程分配

在之前的文章中就說過了。在fasgcgi模式下,php會啟動多個php-fpm進程,來接收nginx發來的請求,那是不是進程越多,速度就越快呢?這可不一定!得根據我們的機器配置和業務量來決定。

我們先來看下,設定進程的配置在哪裡?

pm = static | dynamic | ondemand

pm可以設置成這樣3種,我們用的最多的就上前面2種。

pm = static 模式

pm = static 表示我們創建的php-fpm子進程數量是固定的,那麼就只有pm.max_children = 50這個參數生效。你啟動php-fpm的時候就會一起全部啟動51(1個主+50個子)個進程,頗為壯觀。

pm = dynamic 模式

pm = dynamic模式,表示啟動進程是動態分配的,隨着請求量動態變化的。他由 pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers 這幾個參數共同決定。

上面已經講過,這裡再重申一下吧:

pm.max_children = 50 是最大可創建的子進程的數量。必須設置。這裡表示最多只能50個子進程。

pm.start_servers = 20 隨着php-fpm一起啟動時創建的子進程數目。默認值:min_spare_servers + (max_spare_servers – min_spare_servers) / 2。這裡表示,一起啟動會有20個子進程。

pm.min_spare_servers = 10

設置服務器空閑時最小php-fpm進程數量。必須設置。如果空閑的時候,會檢查如果少於10個,就會啟動幾個來補上。

pm.max_spare_servers = 30

設置服務器空閑時最大php-fpm進程數量。必須設置。如果空閑時,會檢查進程數,多於30個了,就會關閉幾個,達到30個的狀態。

到底選擇static還數dynamic?

很多人恐懼症來襲,不知道選什麼好?

一般原則是:動態適合小內存機器,靈活分配進程,省內存。靜態適用於大內存機器,動態創建回收進程對服務器資源也是一種消耗。

如果你的內存很大,有8-20G,按照一個php-fpm進程20M算,100個就2G內存了,那就可以開啟static模式。如果你的內存很小,比如才256M,那就要小心設置了,因為你的機器裡面的其他的進程也算需要佔用內存的,所以設置成dynamic是最好的,比如:pm.max_chindren = 8, 佔用內存160M左右,而且可以隨時變化,對於一半訪問量的網站足夠了。

慢日誌查詢

我們有時候會經常飽受500,502問題困擾。當nginx收到如上錯誤碼時,可以確定後端php-fpm解析php出了某種問題,比如,執行錯誤,執行超時。

這個時候,我們是可以開啟慢日誌功能的。

slowlog = /usr/local/var/log/php-fpm.log.slow

request_slowlog_timeout = 15s

當一個請求該設置的超時時間15秒後,就會將對應的PHP調用堆棧信息完整寫入到慢日誌中。

php-fpm慢日誌會記錄下進程號,腳本名稱,具體哪個文件哪行代碼的哪個函數執行時間過長:

1.[21-Nov-2013 14:30:38] [pool www] pid 11877

2.script_filename = /usr/local/lnmp/nginx/html/

3.[0xb70fb88c] file_get_contents() /usr/local/lnmp/nginx/html/

通過日誌,我們就可以知道第2行的file_get_contents 函數有點問題,這樣我們就能追蹤問題了。

;

為什麼那麼多的互聯網產品都用php?

主要是考慮成本問題。

對於PHP開發人員來講,PHP是弱類型語言,易於學習。對於公司來講,PHP的人才更容易找到。

PHP是開源免費的,PHP的老搭檔mysql、apache也是免費的。而ASP.NET及其搭檔SQL SERVER是收費的。

PHP的開發周期短,開發項目風險小。使用JSP做網站,開發周期要遠遠長於PHP。項目做完了,可能黃花菜都涼了。

PHP已經非常成熟。實踐證明,PHP可以支持大型的、大流量高並發的網站。其搭檔mysql也非常優秀。

很多建站的開源程序是基於PHP的,比如論壇程序discuz!。

您的採納就是我的動力!

很多人都在反映,PHP現在很難找到工作,真的是這樣嗎?

是的,五年PHP,疫情前辭職了,現在待業快5個月了,找工作好難

先說結果,只會php的開發人員,現在確實比較難找工作。

第一:需求少了

由於疫情影響,有一些小公司倒閉了,現在的情況是人多公司少,競爭相當激烈,如果你只會php那你的競爭力比較低,現在都往全棧開發方向發展,就算你不往全棧發展,最起碼你要懂點linux 系統 或者 除了php之外另外一種流行的編程語言。

第二:函數命名不規,傳參位置不一

先來看網上一個段子:

三個程序員坐在格子間里編程。

A程序員一言不發,他用的是python.

B程序員寫一會兒就按一下編譯,然後就玩會兒手機。他用的是C++。

C程序員坐在那裡瀏覽網頁,不時飛快的鍵入一些字符。

經理看到,怒道:你怎麼不幹活,盡在上網。

C回答:我在查PHP實現這個功能需要用什麼函數 。

儘快是一個段子,不過 php 開發者 在開發過程中,確實經常要上網去搜索 某個功能用的是哪個函數,如果不上網去搜索,我估計開發起來要困難很多 ,資深開發者除外。

第三: php 不再是 ’世界上最好的語言‘

當年在 web 開發領域,php 可以說是沒有對手,絕大部分的web開發都是 用的 php 語言 ,但是隨着現在架構演變,以及新的編程語言出現,嚴重衝擊了php的地位。

php 除了在web 開發領域比較擅長之外,在其他領域就不太行了,比如現在比較火的大數據,人工智能等等。

php 的性能不太好,且對異步支持的不太好,雖然後來出現了 swoole等 優秀的擴展,但很多人還是選擇了 其他編程語言代替,比如 golang

老鐵,確實是這樣的,PHP崗位比較少,在北京用PHP的大中互聯網公司都很少,除非是已經在阿里P8-9以上的人,做管理,要是還是做coding的話,職業發展空間就相對較少,因為年輕人多,公司少,這就是現實。

說個簡單的數據吧,這是我在某網站輸入PHP後得到的獵頭崗位數目,地點選擇的是北京,也就4家企業,獵頭崗位數量其實一定程度上是反應了整體大概的數量。

然後我們再看JAVA的,每頁20個崗位,一共5頁,也就是說大概100個獵頭崗位。

有部分公司轉向GO,截圖不方便,大概是20來個獵頭崗位。

當然不是說PHP的人就不行了,實際上有的獨特項目就是PHP開發的,後面公司想要找這方面的人,還沒發搞定,因為技術語言不一,但是整體來說 PHP找工作跟難是真的。

php目前確實不好找工作了。前後台分離模式崛起以後,可以說現在後端基本上被java壟斷了。那麼再說說java,這門語言出現的時間比較長了,所以你可以輕鬆找到1個10幾年經驗的java工程師,目前java從業者也是最多的。換句話說就是,java這麼好招,我還要php幹啥。不過也不能說php一無是處,畢竟是小公司的創業首選。擁有豐富經驗的phper,還是能夠找到工作的。

疫情之下,工作難找,吃飯又變難了

阿里巴巴在10多年前,淘寶的後端就是php,但是後面漸漸被替換為Java,至今裡邊php的應用早已蕩然無存,足以證明php沒落。

像我司京東,至少我目前接觸的項目,後端全是Java,沒有看到一點php的應用、文檔等。

php的工作還是有的,至少我去年校招的時候投遞百度,裡邊的崗位就有php開發崗,但是招聘人數特別的少,應是維護之前老的項目要用到。現在新的項目,後端挺少人會考慮php的,更多的是Java、Go、Python、C++等。

“php是世界上最好的語言”,這一句常掛程序員嘴邊的讚美,我覺得更多的是對php沒落的嘲諷,但也不比較真,順應技術發展的潮流學習新知識,才是正確的選擇。

很高興收到邀請,我談談個人的看法。主要分為2點。

一、PHP語言在國內的使用情況

國內的大廠普遍使用Java開發比較多一點,而這點PHP就有點小眾了。大廠生存抗壓能力強所以裁員會比較少點。小公司抗壓能力弱,在面對收入減少的情況下,不得不進行裁員。

二、今年疫情帶來的特殊情況

企業生存壓力大,加上疫情原因,導致利潤減少,對開發的要求降低了,很多公司面臨裁員問題。

三、PHP不會被替代

PHP是世界上最好的語言,在做web開發時候,非常快速。PHP的優勢也是很明顯的,不存在被替代的問題

只要功夫深,鐵杵磨成針。

不要太過相信網上說的互聯網寒冬,php待遇差,工作飽和了等一些謠言。

只要你技術過硬,不用你去找工作,工作自然會來找你。但是你的基礎要紮實,還要有發展能力。

什麼是發展能力。就是不斷提升自我的能力,可以不斷學習不斷進步的能力。

我見過很多高手,從來都不僅會一門語言,python,java,php,nodejs,go對他們來說,只要工作有需要,他們都能應付的來。

所以我的建議是如果你對技術感興趣,那就只管去做,工作崗位從來都不缺,他只是等待一個合適的人,而你一旦你出發了,成功就在腳下

五六年的php,後來轉寫go,夾雜着python,現在寫了不到一年的java[捂臉]

我不是PHP,是java疫情期間公司面臨倒閉,就進行了裁員。裁員後發現今年確實不好找工作,尤其是對於30左右的開發人員,真的好難找工作,剛畢業一兩年的沒有什麼影響,他們都基本上一周之內找到了,其他的差不多一個月了還沒有相關的應聘單位接收。感覺可以考慮考慮轉行了,這一行確實優勢不大,因為沒有別人那麼高超的學歷和技術,並沒有比他們優勢大的讓公司選擇你。

現在也好迷茫,其他的又不會,這一行現在工作也不好找。還在外面漂着。不知道什麼時候是個頭。要說技術,說真的也不是很差,開發起來項目也不含糊,但是好久沒面試了,準備起來比以前費勁多了,面試問的問題也越來越難。加油把

Boss上和前程無憂上的確很少。

互聯網php開發是做什麼的

PHP是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

互聯網PHP開發就是指用PHP做網站咯。

PHP是世上最美的語言????

php是什麼語言

PHP屬於編程語言的一種,是一種用於創建動態和交互式HTML網頁的腳本語言。

編程語言是一種被標準化的交流技巧,用來向計算機發出指令,定義計算機程序,讓程序員能夠準確地定義計算機所需要使用的數據,並精確地定義在不同情況下所應當採取的行動的一種計算機語言。而編程語言包含很多細分,而PHP就是其中一種。

它的主要特性為:

①開源性和免費性

由於PHP的解釋器的源代碼是公開的,所以安全係數較高的網站可以自己更改PHP的解釋程序。另外,PHP運行環境的使用也是免費的。

②快捷性

PHP是一種非常容易學習和使用的一門語言,它的語法特點類似於C語言,但又沒有C語言複雜的地址操作,而且又加入了面向對象的概念,再加上它具有簡潔的語法規則,使得它操作編輯非常簡單,實用性很強。

③數據庫連接的廣泛性

PHP可以與很多主流的數據庫建立起連接,如MySQL、ODBC、Oracle等,PHP是利用編譯的不同函數與這些數據庫建立起連接的,PHPLIB就是常用的為一般事務提供的基庫。

④面向過程和面向對象並用

在PHP語言的使用中,可以分別使用面向過程和面向對象,而且可以將PHP面向過程和面向對象兩者一起混用,這是其它很多編程語言是做不到的。

優點

①流行,容易上手

PHP是目前最流行的編程語言,這毋庸置疑。它驅動全球超過2億多個網站,有全球超過81.7%的公共網站在服務器端採用PHP。PHP常用的數據結構都內置了,使用起來方便簡單,也一點都不複雜,表達能力相當靈活。

②開發職位很多

在服務器端的網站編程中PHP會更容易幫助你找到工作。很多互聯網相關企業都在使用PHP開發框架,所以可以說市場對PHP的開發程序員的需求還是比較大的。

③仍然在不斷發展

PHP在不斷兼容着類似closures和命名空間等技術,同時兼顧性能和當下流行的框架。版本是7之後,一直在提供更高性能的應用。

④可植入性強

PHP語言在補丁漏洞升級過程中,核心部分植入簡單易行,且速度快。

⑤拓展性強

PHP語言在數據庫應用過程中,可以從數據庫調取各類數據,執行效率高

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/233593.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 17:09
下一篇 2024-12-11 17:10

相關推薦

發表回復

登錄後才能評論