国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
大型網(wǎng)站優(yōu)化-memcache技術(shù),優(yōu)化-memcache技術(shù)
大型網(wǎng)站優(yōu)化-memcache技術(shù)
memcache簡介
操作memcache
使用php操作memcache
memcached的內(nèi)存管理與刪除機制
實際使用場景
高級特性
分布式memcache配置
緩存雪崩現(xiàn)象
memcache如何做高可用
案例:
擴展
Rumah pembangunan bahagian belakang tutorial php 大型網(wǎng)站優(yōu)化-memcache技術(shù),優(yōu)化-memcache技術(shù)_PHP教程

大型網(wǎng)站優(yōu)化-memcache技術(shù),優(yōu)化-memcache技術(shù)_PHP教程

Jul 12, 2016 am 08:55 AM

大型網(wǎng)站優(yōu)化-memcache技術(shù),優(yōu)化-memcache技術(shù)

大型網(wǎng)站優(yōu)化-memcache技術(shù)

memory+cache 內(nèi)存緩存

memcache簡介

memcache是一套分布式的高速緩存系統(tǒng),由LiveJournal的Brad Fitzpatrick開發(fā),目前被許多網(wǎng)站使用以提升網(wǎng)站的訪問速度,尤其對于一些大型的、需要頻繁訪問數(shù)據(jù)庫的網(wǎng)站訪問速度提升效果十分顯著 。這是一套開放源代碼軟件,以BSD license授權(quán)發(fā)布。【摘取自百度百科】

官網(wǎng):http://memcached.org/

?

分布式:多臺Memcache服務器來管理數(shù)據(jù)的架構(gòu)。

緩存系統(tǒng):將用戶查詢的數(shù)據(jù)緩存到內(nèi)存之中,方便下次直接從內(nèi)存中獲取。減少了磁盤IO的開銷。

什么是nosql?(sql 關(guān)系型數(shù)據(jù)庫)

答:MySQL 叫做關(guān)系型數(shù)據(jù)庫(主要的特點是都是一個二維表結(jié)構(gòu)(表中的行和列),表與表之間是由關(guān)系的)(oracle(Java)、db2、sqlserver

非關(guān)系型數(shù)據(jù):就是不使用sql語句作為查詢的數(shù)據(jù)庫(保存數(shù)據(jù)的系統(tǒng)),并且沒有嚴格意義上的二維表的概念。它的數(shù)據(jù)結(jié)構(gòu)全部是一張巨大的hash表(key-value)

hash表好處: 時間復雜度是 0(1):隨著數(shù)據(jù)的增加,查詢時間不會存在數(shù)量級(1s)的變化。

hash表壞處: hash碰撞 不同 key 對應同一個值

?

key1 ===MD5(sql)

Asion

key2

12

key3

shenzhen

key4

iphone

?

  • selinux沒有關(guān)閉

    ????

    讓selinux立即生效

    ?

  • 2.1 環(huán)境準備

    在Linux環(huán)境下,需要gcc、g-c++、make(makefile)、cmake、autoconfig(configure)、libtool等工具

    在Linux下聯(lián)網(wǎng)的情況下,使用如下命令

    # yum install -y gcc make cmake autoconfig libtool

    -y 不需要使用確認交互式

    ?

    2.2 編譯安裝memcached

    memcached依賴于 libevent庫,因此需要先安裝,分別到各自的官網(wǎng)下載穩(wěn)定版

    libevetnt官網(wǎng):http://libevent.org/

    memcache官網(wǎng):http://memcached.org/

    ?

    先編譯安裝libevent,在編譯安裝memcached,同時在安裝memcached需要指定libevent的安裝路徑

    具體步驟:

    上傳

  • 先下載libevent,解壓,并安裝(一般Linux下軟件安裝都是放在 /usr/local/src目錄下,安裝的軟件一般放在/usr/local/NAME)

    # ./configure --prefix=/usr/local/libevent && make && make install

    b. 安裝memcache,解壓、編譯、安裝

    # ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent && make && make install

    ?

    2.3 memcached的啟動

    # /usr/local/memcached/bin/memcached -m 64 -p 11211 -u nobody -vv

    注意:此時memcached成功啟動,但把信息輸出到控制臺。

    如果想讓memcached作為服務在后臺啟動,只需要加上-d選項(daemon 后臺)

    # /usr/local/memcached/bin/memcached -m 64 -p 11211 -u nobody -d

    ?

    如何查看服務器是否正常啟動?

    # ps axu | grep memcached

    ?

    如果需要查看參數(shù)信息,使用 memcached -h 查看幫助:

    操作memcache

    memcached的客戶端與服務器端的通信很簡單,基于文本的協(xié)議,類似http協(xié)議,可以直接使用Telnet來做交互

    ?

    使用Telnet操作(quit退出)

    # telent 服務器的IP 11211

  • Windows下

    連接之后 使用 ctrl + ] 打開Telnet的回顯

  • Linux下

    ?

    2. 基本命令:

    學習memcache的增刪改查命令:

    add key flag expire length

    key: 名稱

    flag: 1 memcache按照字符串的方式保存

    expire:過期時間,memcache時間

    length:數(shù)據(jù)長度(B)

    ※add 增加

    # add name 1 0 2 # 在memcache服務器上添加一個key為的name值 長度為2個字節(jié),有效期長期有效

    ?

    如何理解expire

    設(shè)置緩存的有效期,有三種格式

  • 設(shè)置秒數(shù),從設(shè)置開始,n秒后失效
  • 時間戳,到指定時間戳后失效
  • 設(shè)置為0,不自動失效(特別注意,不是永久有效。a. 在memcache安裝時候,指定了一個最長的有效時間,默認是30天(源代碼) b. 可能不到30天,就會被擠出去)

    最近最少使用原則

    ?

    ※delete 刪除

    # delete key

    ?

    ※replace 替換

    # replace key flag expire length

    ?

    ※get 獲取

    # get key

    ?

    ※set 如果數(shù)據(jù)有 replace ,沒有則 add

    # set key flag expire length

    name存在:

    age不存在:

    ?

    ※incr 增加

    # incr age NUMBER

    ?

    ※decr 減少

    # decr age NUMBER

    ?

    ※stats 統(tǒng)計memcache服務器信息

    # stats

    ?

    ※flush_all 清空所有數(shù)據(jù)

    # flush_all

    使用php操作memcache

  • Windows下
  • 到(http://downloads.php.net/pierre/)下載擴展dll文件
  • 將該文件放到php的extension_dir 對應的目錄下
  • 修改php.ini文件,加入 extension=php_memcache.dll,引入該文件
  • 重啟Apache

    ?

  • Linux下 (在Linux下如何為php開啟一個擴展,說一下通用方案

    beta :測試版:一般都有一些小bug,但是需要用戶去使用發(fā)現(xiàn),如果有問題,可以給官方反饋。然后在做修復

    alpha:內(nèi)部測試版:內(nèi)部在開發(fā)的時候,使用的版本,一般這個版本bug眾多。但是這個版本往往有新的功能加入。(一般也是新公司才試試)alpha版本有一些補償。

    stable:穩(wěn)定版:基本無bug,能夠穩(wěn)定的運行。

    ?

    ftp使用的注意事項:

  • vsftpd 是否正常的開啟 service vsftpd status
  • 一般都只能使用普通用戶連接ftp(不能root來連接ftp)獲取使用 sudo
  • 自己家目錄的大小空間不夠(上傳文件成功,但是顯示的大小為0)
  • 防火墻是否關(guān)閉(iptables -F 關(guān)閉)(iptables -L)

    ?

    ?

    # cls

    # cd

    # vim .bashrc

    ?

    Linux下載末行模式下

    # :x 小寫 退出 wq

    linux在編輯模式下

    # Z 大寫

    ?

    ?

    # /usr/local/php/bin/phpize 絕對路徑phpize

    d. 利用上面生成的configure文件,收集系統(tǒng)信息 不需要指定安裝路徑

    # ./configure --with-php-config=/usr/local/php/bin/php-config 告訴它如何去找php配置文件

    e. 執(zhí)行編譯、安裝

    # make && make install

    注意:可以查看上述命令執(zhí)行完成之后的結(jié)構(gòu)

    # ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

    ?

    注意:在Linux下,如何查看php.ini配置文件的位置?

    解決:phpinfo();

    ?

    注意:在Linux下,修改配置文件之前,一定要備份

    php.ini-backup-2016-1-12

    ?

    注意:.so是什么文件?

    .so是Linux下的共享對象,類型Windows下的.dll文件

    ?

    ?

    ?

    注意:Linux下,關(guān)閉一個服務 可以使用

    # pkill -9 httpd

    # ps aux | grep httpd

    #ps uax | grep httpd

    ?

    將上面生成的地址增加到php.ini配置文件,如下

    extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

    extension=memcacahe.so

    建立一個test.php文件,測試php是否有memcache的一個模塊

    php操作memcache,保存并獲取值

    memcached的內(nèi)存管理與刪除機制

    ?

    注意:Memcache最大的value也只能是1M的空間。

    ?

    注意:內(nèi)存碎片化永遠都存在,只是哪一種方式可以使得內(nèi)存碎片最小。

    ?

    1. 什么是內(nèi)存碎片化?

    在使用這種內(nèi)存緩存系統(tǒng)的時候,由于不斷的申請,釋放,就會形成一些很小的內(nèi)存片段,無法被利用,這種現(xiàn)象就叫做,內(nèi)存的碎片化。這個小紅塊就是操作系統(tǒng)無法使用的空間。

    ?

  • 如何解決?

    memcache利用slab allocator的方式來管理(每個slab class大小為1M

    最小的單元叫做 chunk(小塊):存放數(shù)據(jù)的倉庫

    多個小單元組成一個chunks:多個小塊組成(所有的小塊的大小全部一致)

    每個 slab class的大小為1M

    ?

  • memcache如何選擇合適的大?。?

    注意:如果 122Bytes的slab裝滿了,現(xiàn)在有一個100Bytes的數(shù)據(jù)來了,存到哪里去?

    答:肯定不會存在144,還是存在122這個chunk里面,利用LRU算法來實現(xiàn)數(shù)據(jù)存儲。

    ?

  • 固定chunk帶來的內(nèi)存浪費,22B

    ?

  • factor調(diào)優(yōu)

    memcached在啟動的時候,會按照一定的大小來組織slab class,可以通過-f 來指定

    默認是1.25,相鄰chunk之間的比值就是增加因子??梢愿鶕?jù)自己網(wǎng)站的業(yè)務調(diào)整緩存因子的大小。

    是因為每個業(yè)務不一樣,所需要的最小的chunk是不一樣的。這個參數(shù)使得我們的系統(tǒng)變得更加適應自己的業(yè)務,因為數(shù)據(jù)可以自己設(shè)定大小。

    ?

  • memcache的惰性刪除

    memcached內(nèi)部不會監(jiān)視記錄是否過期,而是在get時查看記錄的時間戳,檢查記錄是否過期。這種行為被稱為lazy(惰性)expiration。因此,好處是memcached不會在過期監(jiān)視上耗費CPU時間。

    比如:有 set(name, asion, 0, 3600) 過了3600秒就失效,失效后,并不會自動刪除,只有當get查詢時,檢測是否過期,如果過期則刪除。

    例如 # add name 1 8 2 當8s后,是失效,還是不存在?通過stats分析

    分析:是失效你,而不是不存在,只有在下一次去獲取時候,memcache才會去檢測它是否過期,過期了就刪除

    ?

  • memcache的LRU算法

    memcached會優(yōu)先使用已超時的記錄的空間,但即使如此,也會發(fā)生追加新記錄時空間不足的情況,此時就要使用名為 Least Recently Used(LRU)機制來分配空間。

    顧名思義,這是刪除"最近最少使用"的記錄的機制。因此,當memcached的內(nèi)存空間不足時(無法從slab class 獲取到新的空間時),就從最近未被使用的記錄中搜索,并將其空

    間分配給新的記錄。從緩存的實用角度來看,該模型十分理想。

    ?

    當mecache里面的數(shù)據(jù)空間(默認是64M)已經(jīng)占滿了,再繼續(xù)存儲數(shù)據(jù)能否存儲呢?

    答:能存儲,要刪除過期的數(shù)據(jù),如果都沒有過期,則刪除最不活躍的數(shù)據(jù),騰出空間給后面添加數(shù)據(jù)。

    例如:以122Bytes的slab舉例,當數(shù)據(jù)裝滿后,如果來了一個100Bytes數(shù)據(jù),如何處理?(即使永久有效,也會被踢)

    分析:內(nèi)存的管理 LRU算法 、FIFO算法

    ?

  • memcache的一些參數(shù) Ctrl+C

    注意:在vim下如果輸入了 ctrl+s 可以使用 ctrl+q 退出

    -p 監(jiān)聽的端口

    -l 連接的IP地址, 默認是本機

    -d start 啟動memcached服務

    -d restart 重起memcached服務

    -d stop|shutdown 關(guān)閉正在運行的memcached服務

    -d install 安裝memcached服務

    -d uninstall 卸載memcached服務

    -u 以的身份運行 (僅在以root運行的時候有效)

    -m 最大內(nèi)存使用,單位MB。默認64MB

    注意:如果系統(tǒng)是32位的,則最大限制為2G,如果系統(tǒng)是64位,則無限制。

    -M 內(nèi)存耗盡時返回錯誤,而不是刪除項

    -c 最大同時連接數(shù),默認是1024

    -f 塊大小增長因子,默認是1.25

    -n 最小分配空間,key+value+flags默認是48

    -h 顯示幫助

    -v 輸出警告和錯誤信息

    -vv 打印客戶端的請求和返回信息

    -i 打印memcached和libevent的版權(quán)信息

    ?

    實際使用場景

    保存:1. 文件 2. mysql

    問題:如果一個文件夾下session文件過多,檢索變慢,如何處理?

    答:分層處理

    使用Memcache來保存,Memcache使用分布式來保存(拿多臺Memcache做存儲)

    ?

    使用memcache保存session

    ?

    1. 修改php.ini文件,配置信息如下

    ????session.save_handler = memcache #代表使用memcache保存session

    ????session.save_path ="tcp://127.0.0.1:11211" # 指定memcache服務器的地址和端口

  • 測試

    1. 開啟session,保存session

  • 從Memcache獲取session

    高級特性

    分布式memcache配置

    什么是分布式?

    由于單臺memcache的服務能力有限,可以使用多臺memcache來提供緩存的功能,這種架構(gòu)就叫做memcache的分布式緩(集群)存系統(tǒng)

    ?

    如何實現(xiàn)?

    可以這樣理解,如何將數(shù)據(jù)分散答各臺Memcache服務器上。

    ?

    在客戶端實現(xiàn)分布式,在數(shù)據(jù)保存之前,根據(jù)一定的算法,將數(shù)據(jù)保存到那臺memcache服務器上,在獲取數(shù)據(jù)的時候,按照前面相同的算法去對應的memcache服務器上獲取數(shù)據(jù)

    ?

    分布式算法

  • 取摸算法

    將key的值對服務器的臺數(shù)取余,然后將對應的value值保存到對應的余數(shù)的那臺memcache服務器上,一般這個hash函數(shù) crc32( key ) % 3

    crc32()這個函數(shù)可以使得一個字符串變成一個32位的整數(shù)

    ?

    壞處:當某一臺服務器宕機或者需要增加一臺服務器的時候,這個時候緩存數(shù)據(jù)基本全部失效,因為除數(shù)變了。 不嚴格的公式, 命中率 = 取到數(shù)據(jù)/總數(shù) 1/N N代表服務器的臺數(shù)

    ?

    引發(fā)出來的問題:當memcache宕機之后,緩存數(shù)據(jù)失效,這個時候MySQL的壓力會驟增,

    這個時候,MySQL會宕機,然后在重啟MySQL,MySQL會在短時期內(nèi)再次宕機,然后,稍微延遲一點(緩存已經(jīng)重新建立了一部分),又宕機。隨著時間的慢慢推移,MySQL基本上趨于穩(wěn)定,緩存系統(tǒng)成功建立。因為緩存數(shù)據(jù)不存在,所有的請求全部要轉(zhuǎn)向MySQL來提供,這種現(xiàn)象就叫做memcache的雪崩現(xiàn)象。

    ?

    概圖:

    ?

    ?

  • 一致性hash實現(xiàn)分布式

    ?

  • 假想有一個圓環(huán),分布著從 0 到 2^32 這么多個正整數(shù)

    ?

  • 然后在將服務器的節(jié)點數(shù)通過hash函數(shù)(crc32())運算后,按照順時針的方向映射到上面的圓環(huán)上

    ?

  • 將需要存儲的數(shù)據(jù)的key也按照上面的hash函數(shù)運算后,按照順時針的方向保存到一個不比自己小的節(jié)點上

    ?

    注意:只要是memcache宕機,就一定會有數(shù)據(jù)的丟失。但是要想辦法讓數(shù)據(jù)丟失的最少,使用一致性hash,即使有一臺服務器宕機,也只是影響一臺服務器上的數(shù)據(jù)。

    ?

    虛擬節(jié)點:分擔任務

    緩存雪崩現(xiàn)象

    雪崩造成的原因?

  • 由于算法不當,取摸算法,造成大量緩存失效,會引發(fā)雪崩

    解決方案:一致性hash算法

    ?

  • 緩存時間都是同一時間,緩存系統(tǒng)會在同一時間全部失效,這個也會造成雪崩

    解決方案:緩存時間設(shè)置成一個范圍內(nèi)的隨機時間(3-9小時)

    ?

    由于某個memcache節(jié)點的緩存數(shù)據(jù)失效,導致其他memcache節(jié)點的緩存命中率下降,緩存中缺失的數(shù)據(jù)會去MySQL數(shù)據(jù)庫中查詢,短時期內(nèi),造成了MySQL服務器壓力巨大,造成宕機,就叫做緩存雪崩現(xiàn)象。

    ?

    當重啟MySQL之后,短期內(nèi)再次宕機,但緩存數(shù)據(jù)已經(jīng)建立了一部分,在MySQL反復多次啟動之后,緩存全部重建完畢,MySQL不再宕機趨于穩(wěn)定。

    ?

    解決方案:把緩存的時間設(shè)置成一個范圍內(nèi)的隨機值(3-9小時),這樣就在不同的時間段失效,把重建的工作分擔到不同的時間上。

    memcache如何做高可用

  • 使用repcached實現(xiàn),全稱 replication cached是由日本人發(fā)明的memcached的高可用性技術(shù),簡稱復制緩沖區(qū)技術(shù)。

    ?

  • MemcacheDB是一個分布式、key-value形式的持久存儲系統(tǒng)。由sina人員開發(fā)。它不是一個緩存組件,而是一個基于對象存取的、可靠的、快速的持久存儲引擎。協(xié)議跟memcache一致(不完整),所以很多memcached客戶端都可以跟它連接。MemcacheDB采用Berkeley DB作為持久存儲組件,故很多Berkeley DB的特性的他都支持。擴展
  • 如何在Linux下給一個php添加一個擴展,說出通用步驟?

    答:

    ?

  • memcache的安全性如何解決?

    答:

    由于memcache的本身設(shè)計就是極為簡潔的,根本沒有設(shè)置權(quán)限方面的限制。為什么不設(shè)置權(quán)限? 只提供緩存功能,為了精簡

  • 放在內(nèi)網(wǎng) 192.168.1.110 內(nèi)網(wǎng)IP外網(wǎng)無法訪問
  • 寫一個防火墻驗證規(guī)則,只允許自己規(guī)定IP的包可以轉(zhuǎn)進來,其他的全部丟棄

    192.168.1.221 ---224

    3. 當使用文件保存session文件時候,如果文件過多,如何處理?

    一般來說,超過65535個session文件的時候,這個時候session的獲取就會變得異常緩慢,意味php代碼執(zhí)行很慢,如何解決?

    答:

    分層處理: 一個文件夾下建立A-Z開頭的文件夾 然后A_Z在建立

    使用memcache處理: 單臺memcache處理能力有限,就使用分布式memcache來處理

  • 如何理解負載均衡集群也是高可用集群,但有不是?

    答:負載均衡集群提供了高可用的能力,如果某一臺宕機之后,還是可以提供正常的服務,只是服務提供的有些吃力而已。

    因為負載均衡集群不提供keepalive的機制。監(jiān)控機制

    ?

    案例:

    在項目中如何使用Memcache?

    Memcache存在的意義就是緩存數(shù)據(jù),減輕MySQL的壓力。

    ?

  • 書寫一個列表頁

  • 詳情頁

    ?

    擴展

  • Linux下安裝一個php的擴展的通用方法

    答:

  • 下載對應的擴展的源碼 http://pecl.php.net/package/memcache
  • 將對于的擴展上傳到Linux服務器上,放在(/usr/local/src/下)
  • 執(zhí)行 tar -zxvf NAME.tar.gz
  • cd NAME
  • 執(zhí)行絕對路徑下的phpize命名 (/usr/local/php/bin/phpize)必須在擴展包的目錄內(nèi)
  • 執(zhí)行 ./configure --with-php-config=/usr/local/php/bin/php-config (--with-php-config=絕對路徑下的php-config的路徑,并且不需要指定安裝的路徑)
  • make && make install
  • 會生成一個目錄,在個目錄里面有對于的NAME.so文件
  • 去修改php.ini的配置文件,增加兩行信息

    extension_dir='上面生成的目錄'

    extension='NAME.so'

  • 重啟Apache,然后使用phpinfo()函數(shù)測試一下,在瀏覽器輸入地址查看,搜索如果有Memcache,代表擴展成功的開啟。

    ?

  • www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1117896.htmlTechArticle大型網(wǎng)站優(yōu)化-memcache技術(shù),優(yōu)化-memcache技術(shù) 大型網(wǎng)站優(yōu)化-memcache技術(shù) memory+cache 內(nèi)存緩存 memcache簡介 memcache是一套 分布式 的高速 緩存系統(tǒng)...
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

    Alat AI Hot

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    Video Face Swap

    Video Face Swap

    Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

    Alat panas

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    Hantar Studio 13.0.1

    Hantar Studio 13.0.1

    Persekitaran pembangunan bersepadu PHP yang berkuasa

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    SublimeText3 versi Mac

    SublimeText3 versi Mac

    Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

    Topik panas

    Tutorial PHP
    1502
    276
    Skop pembolehubah PHP dijelaskan Skop pembolehubah PHP dijelaskan Jul 17, 2025 am 04:16 AM

    Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

    Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Jul 08, 2025 am 02:37 AM

    Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

    Mengulas kod dalam php Mengulas kod dalam php Jul 18, 2025 am 04:57 AM

    Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

    Bagaimana penjana berfungsi dalam php? Bagaimana penjana berfungsi dalam php? Jul 11, 2025 am 03:12 AM

    Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

    Petua untuk menulis komen php Petua untuk menulis komen php Jul 18, 2025 am 04:51 AM

    Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

    Belajar PHP: Panduan Pemula Belajar PHP: Panduan Pemula Jul 18, 2025 am 04:54 AM

    Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech

    Cara mengakses watak dalam rentetan dengan indeks dalam php Cara mengakses watak dalam rentetan dengan indeks dalam php Jul 12, 2025 am 03:15 AM

    Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

    Tutorial pemasangan php cepat Tutorial pemasangan php cepat Jul 18, 2025 am 04:52 AM

    Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

    See all articles