本文目錄一覽:
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