激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

PHP可以做什么

時(shí)間:2024-10-19 11:51:04 PHP 我要投稿
  • 相關(guān)推薦

PHP可以做什么

  PHP屬于后起之秀,吸收了java和c以及perl等語(yǔ)言?xún)?yōu)點(diǎn),專(zhuān)注互聯(lián)網(wǎng)領(lǐng)域。WEB領(lǐng)域PHP擁有得天獨厚的優(yōu)勢,WEB領(lǐng)域沒(méi)有語(yǔ)言可以和他比。將來(lái)一定是互聯(lián)網(wǎng)的天下;ヂ(lián)網(wǎng)離不開(kāi)WEB,WEB離不開(kāi)PHP。那么PHP可以做什么?一起來(lái)看看PHP的用途吧!

  PC端網(wǎng)站開(kāi)發(fā)

  60%全球互聯(lián)網(wǎng)網(wǎng)站采用php技術(shù),80%國內互聯(lián)網(wǎng)網(wǎng)站使用php開(kāi)發(fā)。這些網(wǎng)站包含購物網(wǎng)站,政府企業(yè)網(wǎng)站,QQ空間,論壇博客等等。

  移動(dòng)端微網(wǎng)站開(kāi)發(fā)

  移動(dòng)設備的普及為移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展奠定了基礎!手機淘寶網(wǎng)站,手機京東網(wǎng)站等等, 微信公眾號應用中的微網(wǎng)站。 將來(lái)微網(wǎng)站和公眾號肯定會(huì )取代APP的地位!

  APP后臺開(kāi)發(fā)

  APP后臺開(kāi)發(fā)也是移動(dòng)互聯(lián)網(wǎng)發(fā)展的一個(gè)產(chǎn)物。大多數網(wǎng)站為了讓用戶(hù)在手機上能夠得到更好體驗效果,都加入開(kāi)發(fā)APP的開(kāi)發(fā)行列中。而PHP后端技術(shù)將會(huì )作為他們的不二選擇。

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

  php-fpm的安裝目錄

  下面是我的平時(shí)的環(huán)境搭建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

  由于我開(kāi)發(fā)以Mac為主,所以就用Mac的環(huán)境配置來(lái)學(xué)習。

  php-fpm配置詳解

  這是搜索的一份還算算比較詳細的php-fpm.conf配置詳解,我會(huì )針對性的修改下,當然php手冊上也有詳細的講解:http://php.net/manual/zh/install.fpm.configuration.php

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

  2.#pid設置,一定要開(kāi)啟,上面是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紀錄的登記?捎眉墑e為: 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進(jìn)程數如果超過(guò) emergency_restart_threshold個(gè),php-fpm就會(huì )優(yōu)雅重啟。這兩個(gè)選項一般保持默認值。0 表示 '關(guān)閉該功能'. 默認值: 0 (關(guān)閉).

  13.

  14.process_control_timeout = 0

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

  16.

  17.daemonize = yes

  18.#后臺執行fpm,默認值為yes,如果為了調試可以改為no。在FPM中,可以使用不同的設置來(lái)運行多個(gè)進(jìn)程池。 這些設置可以針對每個(gè)進(jìn)程池單獨設置。

  19.

  20.listen = 127.0.0.1:9000

  21.#fpm監聽(tīng)端口,即nginx中php處理的地址,一般默認值即可?捎酶袷綖: 'ip:port', 'port', '/path/to/unix/socket'. 每個(gè)進(jìn)程池都需要設置。如果nginx和php在不同的機器上,分布式處理,就設置ip這里就可以了。

  22.

  23.listen.backlog = -1

  24.#backlog數,設置 listen 的半連接隊列長(cháng)度,-1表示無(wú)限制,由操作系統決定,此行注釋掉就行。backlog含義參考:http://www.3gyou.cc/?p=41

  25.

  26.listen.allowed_clients = 127.0.0.1

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

  28.

  29.listen.owner = www

  30.listen.group = www

  31.listen.mode = 0666

  32.#unix socket設置選項,如果使用tcp方式訪(fǎng)問(wèn),這里注釋即可。

  33.

  34.user = www

  35.group = www

  36.#啟動(dòng)進(jìn)程的用戶(hù)和用戶(hù)組,FPM 進(jìn)程運行的Unix用戶(hù), 必須要設置。用戶(hù)組,如果沒(méi)有設置,則默認用戶(hù)的組被使用。

  37.

  38.pm = dynamic

  39.#php-fpm進(jìn)程啟動(dòng)模式,pm可以設置為static和dynamic和ondemand

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

  41.

  42.#如果選擇dynamic,則進(jìn)程數是動(dòng)態(tài)變化的,由以下參數決定:

  43.pm.max_children = 50 #子進(jìn)程最大數

  44.pm.start_servers = 2 #啟動(dòng)時(shí)的進(jìn)程數,默認值為: min_spare_servers + (max_spare_servers - min_spare_servers) / 2

  45.pm.min_spare_servers = 1 #保證空閑進(jìn)程數最小值,如果空閑進(jìn)程小于此值,則創(chuàng )建新的子進(jìn)程

  46.pm.max_spare_servers = 3 #,保證空閑進(jìn)程數最大值,如果空閑進(jìn)程大于此值,此進(jìn)行清理

  47.

  48.pm.max_requests = 500

  49.#設置每個(gè)子進(jìn)程重生之前服務(wù)的請求數. 對于可能存在內存泄漏的第三方模塊來(lái)說(shuō)是非常有用的. 如果設置為 '0' 則一直接受請求. 等同于 PHP_FCGI_MAX_REQUESTS 環(huán)境變量. 默認值: 0.

  50.

  51.pm.status_path = /status

  52.#FPM狀態(tài)頁(yè)面的網(wǎng)址. 如果沒(méi)有設置, 則無(wú)法訪(fǎng)問(wèn)狀態(tài)頁(yè)面. 默認值: none. munin監控會(huì )使用到

  53.

  54.ping.path = /ping

  55.#FPM監控頁(yè)面的ping網(wǎng)址. 如果沒(méi)有設置, 則無(wú)法訪(fǎng)問(wèn)ping頁(yè)面. 該頁(yè)面用于外部檢測FPM是否存活并且可以響應請求. 請注意必須以斜線(xiàn)開(kāi)頭 (/)。

  56.

  57.ping.response = pong

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

  59.

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

  61.#每一個(gè)請求的訪(fǎng)問(wèn)日志,默認是關(guān)閉的。

  62.

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

  64.#設定訪(fǎng)問(wèn)日志的格式。

  65.

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

  67.#慢請求的記錄日志,配合request_slowlog_timeout使用,默認關(guān)閉

  68.

  69.request_slowlog_timeout = 10s

  70.#當一個(gè)請求該設置的超時(shí)時(shí)間后,就會(huì )將對應的PHP調用堆棧信息完整寫(xiě)入到慢日志中. 設置為 '0' 表示 'Off'

  71.

  72.request_terminate_timeout = 0

  73.#設置單個(gè)請求的超時(shí)中止時(shí)間. 該選項可能會(huì )對php.ini設置中的'max_execution_time'因為某些特殊原因沒(méi)有中止運行的腳本有用. 設置為 '0' 表示 'Off'.當經(jīng)常出現502錯誤時(shí)可以嘗試更改此選項。

  74.

  75.rlimit_files = 1024

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

  77.

  78.rlimit_core = 0

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

  80.

  81.chroot =

  82.#啟動(dòng)時(shí)的Chroot目錄. 所定義的目錄需要是絕對路徑. 如果沒(méi)有設置, 則chroot不被使用.

  83.

  84.chdir =

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

  86.

  87.catch_workers_output = yes

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

  當然還有一些無(wú)關(guān)緊要的設置,用到了再說(shuō)吧。

  一些重要的設置

  php-fpm進(jìn)程分配

  在之前的文章中就說(shuō)過(guò)了。在fasgcgi模式下,php會(huì )啟動(dòng)多個(gè)php-fpm進(jìn)程,來(lái)接收nginx發(fā)來(lái)的請求,那是不是進(jìn)程越多,速度就越快呢?這可不一定!得根據我們的機器配置和業(yè)務(wù)量來(lái)決定。

  我們先來(lái)看下,設定進(jìn)程的配置在哪里?

  pm = static | dynamic | ondemand

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

  pm = static 模式

  pm = static 表示我們創(chuàng )建的php-fpm子進(jìn)程數量是固定的,那么就只有pm.max_children = 50這個(gè)參數生效。你啟動(dòng)php-fpm的時(shí)候就會(huì )一起全部啟動(dòng)51(1個(gè)主+50個(gè)子)個(gè)進(jìn)程,頗為壯觀(guān)。

  pm = dynamic 模式

  pm = dynamic模式,表示啟動(dòng)進(jìn)程是動(dòng)態(tài)分配的,隨著(zhù)請求量動(dòng)態(tài)變化的。他由 pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers 這幾個(gè)參數共同決定。

  上面已經(jīng)講過(guò),這里再重申一下吧:

  pm.max_children = 50 是最大可創(chuàng )建的子進(jìn)程的數量。必須設置。這里表示最多只能50個(gè)子進(jìn)程。

  pm.start_servers = 20 隨著(zhù)php-fpm一起啟動(dòng)時(shí)創(chuàng )建的子進(jìn)程數目。默認值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2。這里表示,一起啟動(dòng)會(huì )有20個(gè)子進(jìn)程。

  pm.min_spare_servers = 10

  設置服務(wù)器空閑時(shí)最小php-fpm進(jìn)程數量。必須設置。如果空閑的時(shí)候,會(huì )檢查如果少于10個(gè),就會(huì )啟動(dòng)幾個(gè)來(lái)補上。

  pm.max_spare_servers = 30

  設置服務(wù)器空閑時(shí)最大php-fpm進(jìn)程數量。必須設置。如果空閑時(shí),會(huì )檢查進(jìn)程數,多于30個(gè)了,就會(huì )關(guān)閉幾個(gè),達到30個(gè)的狀態(tài)。

  到底選擇static還數dynamic?

  很多人恐懼癥來(lái)襲,不知道選什么好?

  一般原則是:動(dòng)態(tài)適合小內存機器,靈活分配進(jìn)程,省內存。靜態(tài)適用于大內存機器,動(dòng)態(tài)創(chuàng )建回收進(jìn)程對服務(wù)器資源也是一種消耗。

  如果你的內存很大,有8-20G,按照一個(gè)php-fpm進(jìn)程20M算,100個(gè)就2G內存了,那就可以開(kāi)啟static模式。如果你的內存很小,比如才256M,那就要小心設置了,因為你的機器里面的其他的進(jìn)程也算需要占用內存的,所以設置成dynamic是最好的,比如:pm.max_chindren = 8, 占用內存160M左右,而且可以隨時(shí)變化,對于一半訪(fǎng)問(wèn)量的網(wǎng)站足夠了。

  慢日志查詢(xún)

  我們有時(shí)候會(huì )經(jīng)常飽受500,502問(wèn)題困擾。當nginx收到如上錯誤碼時(shí),可以確定后端php-fpm解析php出了某種問(wèn)題,比如,執行錯誤,執行超時(shí)。

  這個(gè)時(shí)候,我們是可以開(kāi)啟慢日志功能的。

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

  request_slowlog_timeout = 15s

  當一個(gè)請求該設置的超時(shí)時(shí)間15秒后,就會(huì )將對應的PHP調用堆棧信息完整寫(xiě)入到慢日志中。

  php-fpm慢日志會(huì )記錄下進(jìn)程號,腳本名稱(chēng),具體哪個(gè)文件哪行代碼的哪個(gè)函數執行時(shí)間過(guò)長(cháng):

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

  2.script_filename = /usr/local/lnmp/nginx/html/www.quancha.cn/www/fyzb.php

  3.[0xb70fb88c] file_get_contents() /usr/local/lnmp/nginx/html/www.quancha.cn/www/fyzb.php:2

  通過(guò)日志,我們就可以知道第2行的file_get_contents 函數有點(diǎn)問(wèn)題,這樣我們就能追蹤問(wèn)題了。

【PHP可以做什么】相關(guān)文章:

影視專(zhuān)業(yè)出來(lái)可以做什么08-01

安全工程師可以做什么工作?08-28

關(guān)于php面試寶典及PHP面試技巧08-16

PHP的壓縮函數06-21

php高級教程01-23

AIA考試難嗎-拿到AIA證書(shū)可以在企業(yè)里做什么12-28

淘米水可以用來(lái)做什么-淘米水12個(gè)妙用01-20

如何學(xué)好PHP知識09-20

 PHP的基礎編程與應用10-16

淺析php函數的實(shí)例06-08

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频