PHP筆記(PHP高級篇),php筆記
高級篇中將涉及數(shù)據(jù)庫的使用以及Cookie和Session會話,提高PHP的開發(fā)效率和運(yùn)行效率
?
PHP程序員需要掌握的MySQL操作
- 為項目設(shè)計表
- 使用SQL語句
- MySQL的目錄結(jié)構(gòu)
- data目錄中存放的是庫文件
- bin目錄中存放的是MySQL管理命令
- *.ini文件記錄的是MySQL的配置
連接MySQL DB:
- mysql -h sql地址 -u 用戶名 -p密碼,如mysql -h localhost -u root -p123456
- 安全的方法:先輸入“mysql -h sql地址 -u 用戶名 -p”,回車,再輸入密碼
?數(shù)據(jù)定義語言(DDL)
- 定義:用來創(chuàng)建數(shù)據(jù)庫中的各種對象-----表、視圖、索引、同義詞、聚簇等
- SQL語句
- 創(chuàng)建數(shù)據(jù)庫
-
<span>CREATE</span> <span>DATABASE</span> <span>[</span><span>IF NO EXISTS</span><span>]</span> DatabaseName
- 創(chuàng)建表
<span>CREATE</span> <span>TABLE</span> <span>[</span><span>IF NOT EXISTS</span><span>]</span><span> TableName ( colname1 type </span><span>[</span><span>property</span><span>]</span> <span>[</span><span>index</span><span>]</span><span>, colname2 type </span><span>[</span><span>property</span><span>]</span> <span>[</span><span>index</span><span>]</span><span>, ... )[tableType] [tableCharSet];</span>
- 修改表
- alter table 操作
- 數(shù)據(jù)類型
- 數(shù)值型
- UNSIGNED:指定為無符號存儲
- 整型
- TINYINT 1 Byte (-128,127) (0,255) 小整數(shù)值
SMALLINT 2 Byte (-32 768,32 767) (0,65 535) 大整數(shù)值
MEDIUMINT 3 Byte (-8 388 608,8 388 607) (0,16 777 215) 大整數(shù)值
INT或INTEGER 4 Byte (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整數(shù)值
BIGINT 8 Byte (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 極大整數(shù)值
- TINYINT 1 Byte (-128,127) (0,255) 小整數(shù)值
- 浮點型
- FLOAT 4 字節(jié) (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38)
- DOUBLE 8 字節(jié) (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
- 字符型
- CHAR 0-255Byte 定長字符串,
VARCHAR 0-255Byte 變長字符串,必須指定長度
TINYBLOB 0-255Byte 不超過 255 個字符的二進(jìn)制字符串
TINYTEXT 0-255Byte 短文本字符串
BLOB 0-65 535Byte 二進(jìn)制形式的長文本數(shù)據(jù)
TEXT 0-65 535Byte 長文本數(shù)據(jù)
MEDIUMBLOB 0-16 777 215Byte 二進(jìn)制形式的中等長度文本數(shù)據(jù)
MEDIUMTEXT 0-16 777 215Byte 中等長度文本數(shù)據(jù)
LOGNGBLOB 0-4 294 967 295Byte 二進(jìn)制形式的極大文本數(shù)據(jù)
LONGTEXT 0-4 294 967 295Byte 極大文本數(shù)據(jù) - CHAR的處理速度比較快,VARCHAR具有可變大小
- 二進(jìn)制保存主要用于保存非文本文件
- ENUM,枚舉類型,最多能存儲65535個值,一個字段只能存一個值
- SET,集合類型,最多可存儲64個值,一個值段可存多個值
- CHAR 0-255Byte 定長字符串,
- 日期型
- DATE 3Byte 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3Byte '-838:59:59'/'838:59:59' HH:MM:SS 時間值或持續(xù)時間
YEAR 1Byte 1901/2155 YYYY 年份值
DATETIME 8Byte 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和時間值
TIMESTAMP 8Byte 1970-01-01 00:00:00/2037 年某時 YYYYMMDD HHMMSS 混合日期和時間值,時間戳
- DATE 3Byte 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
- 數(shù)值型
※任何數(shù)據(jù)類型以字符串的形式存入,都可以自動轉(zhuǎn)換類型
※將時間保存為php時間戳,方便運(yùn)算
數(shù)據(jù)字段屬性
- unsigned:設(shè)置該字段為無符號數(shù)值,只能是數(shù)值型
- zerofill:設(shè)置該字段的記錄的值未達(dá)到指定位數(shù)時,用“0”填充,只能是數(shù)值型
- auto_increment:設(shè)置該字段的值自動增長,也可設(shè)定自定義值,需要同時設(shè)定索引或主鍵,只能是數(shù)值型
- null和not null:設(shè)置該字段是否允許為空,建議設(shè)定為非空,配合default使用
- default:設(shè)置該字段的默認(rèn)值,若不輸入,使用默認(rèn)值
索引
- 優(yōu)點:
- 提高查詢速度
- 缺點:
- 創(chuàng)建和維護(hù)成本比較高
- 占用資源
- 主鍵索引(primary key):索引值必須唯一,每張表只有一個
- 唯一索引(unique):索引值必須唯一,但一張表可以有多個
- 常規(guī)索引(index):最基本的索引,沒有太多的限制
- 全文索引(filltext):只能在MyISAM上使用,表越大,效果越好,但速度較慢
- 創(chuàng)建和使用,可查看MySQL索引類型一覽表 讓MySQL高效運(yùn)行起來
數(shù)據(jù)表類型及存儲位置
- MySQL可以針對不同的存儲引擎需求可以選擇最優(yōu)的存儲引擎
- 數(shù)據(jù)表類型即存儲引擎
- 使用type或engine關(guān)鍵字指定表類型
- 常用的表類型
- MyISAM
- 強(qiáng)調(diào)快速讀取操作
- 對一些功能不支持(事務(wù))
- InnoDB
- 支持一些MyISAM不支持的功能
- 不支持全文索引
- 占用空間比較大
功能 MyISAM InnoDB 事務(wù)處理 不支持 支持 數(shù)據(jù)行鎖定 不支持 支持 外鍵約束 不支持 支持 表空間占用 相對較小 較大 全文索引 支持 不支持
- 占用空間比較大
- MyISAM
MySQL默認(rèn)字符集
- 推薦utf8
- 字符集:用來定義MySQL存儲字符串的方式
- 使用character set關(guān)鍵字指定字符集
- 校對規(guī)則:對規(guī)則定義了比較字符串的方式
- 使用collate指定校對規(guī)則
數(shù)據(jù)操作語言(DML)
- 主要有三種形式:
- 1) 插入:INSERT
- insert into tablename[(字段列表)] values(值列表1)[,(值列表2)...]
- 表名后面,若有字段列表,則值列表與字段列表一一對應(yīng),若沒有字段列表,則值列表與表中的字段一一對應(yīng)
- insert into tablename[(字段列表)] values(值列表1)[,(值列表2)...]
- 2) 更新:UPDATE
- update tablename set 字段名='值' [條件]
- 1) 插入:INSERT
-
- 3) 刪除:DELETE
- delete from tablename [條件]
- 可以使用運(yùn)算符,包括算術(shù)運(yùn)算符、邏輯運(yùn)算符、比較運(yùn)算符、位運(yùn)算符
- 3) 刪除:DELETE
數(shù)據(jù)查詢語言(DQL)
- 基本結(jié)構(gòu)是由SELECT[ALL|DISTINCT]子句,F(xiàn)ROM子句,WHERE
- 子句組成的查詢塊:
- SELECT <字段列表>
- FROM <表或視圖名>
- [WHERE<查詢條件>/GROUP BY/ORDER BY]
- DISTINCT表示不顯示重復(fù)的記錄
- 使用as關(guān)鍵字,可為字段名起別名,用于可能產(chǎn)生歧義的字段名
- 子句組成的查詢塊:
數(shù)據(jù)控制語言(DCL)
- 定義:用來授予或回收訪問數(shù)據(jù)庫的某種特權(quán),并控制數(shù)據(jù)庫操縱事務(wù)發(fā)生的時間及效果,對數(shù)據(jù)庫實行監(jiān)視等。
MySQL內(nèi)置函數(shù)
- 位置:select語句,及子句where order by having 中,update delete語句及子句
- 函數(shù)中可以將字段名當(dāng)作變量來用,變量的值就是該列對應(yīng)的所有值
- 常用
- 字符串函數(shù)
- concat:把傳入的參數(shù)連接成一個字符串
- insert(str,x,y,insert):從str的x位置開始,替換y長度的字符串為insert
- lower(str),upper(str):將字符串轉(zhuǎn)換為大寫,小寫
- left(str,x) right(str,x) 返回str左邊(右邊)x個字符,x為null則返回null
- lpad(str,n,pad) rpad(str,n,pad) 用pad對字符串str從最左邊(右邊)進(jìn)行填充,直到總長度n
- trim(str),ltrim(str),rtrim(str)去掉兩邊,左邊,右邊空格
- replace(str,a,b) 在字符串str中用字符串b替換所有的字符串a(chǎn)
-
strcmp(s1,s2):如果S1比S2小,返回-1;如果S1比S2大則返回1;如果相等則返回0(比較的是ASCII碼)
- substring(str,x,y) 返回字符串str中從位置x起,長度為y的子字符串
- 數(shù)值函數(shù)
- abs(x):返回絕對值
- ceil(x):返回大于x的最小整數(shù)
- floor(x):返回小于x的最大整數(shù)
- mod(x,y):返回x與y的模
- rand():返回0-1之間的隨機(jī)數(shù)
- round(x,y):返回參數(shù)x的y位小數(shù)的四舍五入結(jié)果
- truncate(x,y):返回數(shù)字x截斷為y位小數(shù)的結(jié)果
- 日期函數(shù)
- curdate():返回當(dāng)前年月日
- curtime():返回當(dāng)前時分秒
- now():返回當(dāng)前日期
- unix_timestamp(time):返回unix時間戳
- from_unixtime():將Unix時間戳轉(zhuǎn)換為日期
- week():返回時間戳的周
- year():返回時間戳的年
- hour():返回時間戳的小時
- minute():返回時間戳的分鐘
- month():返回時間戳的月
- date_format(time,"%Y-%m-%d %H:%i:%s"):格式化返回時間
- 流程控制函數(shù)
- if(value,t,f):如果value值為true,返回t,如果value值為false,返回f
- ifnull(value1,value2):如果value1為空,則返回value2,如果value1不為空,返回value1
- case
when value1 then value2
when value3 then value4
......
else fault END
- 當(dāng)value1為true,返回value2,當(dāng)value3位true,返回value4,以此類推,否則返回fault
- 其他用法:mysql 語句case when
- 其他函數(shù)
- database():返回數(shù)據(jù)庫名
- version():返回MySQL版本
- user():返回MySQL的用戶
- inet_aton(ip):將IP轉(zhuǎn)換為網(wǎng)路字節(jié)序
- inet_nton():將網(wǎng)絡(luò)字節(jié)序轉(zhuǎn)為IP
- password():MySQL用戶密碼加密
- md5(str):將字符串加密
- 字符串函數(shù)
PHP操作數(shù)據(jù)庫
- 連接數(shù)據(jù)庫
- mysql_connect(IP,user,psw):IP為數(shù)據(jù)庫地址,user為用戶名,psw為用戶密碼,連接成功,返回數(shù)據(jù)庫資源,連接失敗,返回false
- 選擇庫
- mysql_select_db($dbname,[$res]):$dbname為庫名稱;$res為連接數(shù)據(jù)庫是返回的資源,若不添加該參數(shù),則默認(rèn)為最近創(chuàng)建的數(shù)據(jù)庫資源
- SQL語句輸入
- mysql_query():執(zhí)行SQL語句,若語句有返回結(jié)果集,則函數(shù)執(zhí)行成功返回結(jié)果集,若語句沒有返回結(jié)果集,函數(shù)執(zhí)行成功返回true
- 解決錯誤
- mysql_errno():返回錯誤號
- mysql_error():返回錯誤信息
- 關(guān)閉數(shù)據(jù)庫資源
- mysql_close():關(guān)閉數(shù)據(jù)庫資源,不使用參數(shù),默認(rèn)關(guān)閉開啟的資源(推薦)
- 函數(shù)
- mysql_insert_id():返回自動增長的id,若沒有設(shè)置AUTO_INCREMENT,則返回false
- mysql_affected_rows():獲取受影響的行數(shù)
- 從結(jié)果集中取出數(shù)據(jù)
- mysql_fetch_row($result):從結(jié)果集中取得一條數(shù)據(jù),返回索引數(shù)組
- mysql_fetch_assoc($result):從結(jié)果集中取得一條數(shù)據(jù),返回關(guān)聯(lián)數(shù)組
- mysql_fetch_array($result):從結(jié)果集中取得一條數(shù)據(jù),返回索引數(shù)組和關(guān)聯(lián)數(shù)組
- mysql_fetch_object($result):從結(jié)果集中取得一條數(shù)據(jù),返回對象
- mysql_data_seek($result,$row):將指針移動到指定位置
- 從結(jié)果集中獲取字段
- mysql_num_rows($result):獲取結(jié)果集的字段數(shù)
- mysql_num_fields($result):獲取結(jié)果集的列數(shù)
- mysql_field_name($result):獲取結(jié)果集的字段名
mysqli操作數(shù)據(jù)庫
- PHP5以后的新添加的功能都是面向?qū)ο蟮?,所以mysqli是以對象的形式添加的
- mysqli優(yōu)點
- 表示改進(jìn)
- 功能增加
- 效率大大增加
- 更穩(wěn)定
- mysqli擴(kuò)展提供的三個類
- mysqli:和連接有關(guān)的類
- 構(gòu)造方法
- mysqli([$host [, $username [, $passd[, $dbname [,$port [, $socket ]]]]]] )
- 連接成功返回對象,失敗返回false
- 查看連接失敗信息
- connect_errno():返回連接錯誤號碼
- connect_error():返回連接錯誤信息
- SQL語句輸入
- query(sql):執(zhí)行SQL語句,若語句有返回結(jié)果集,則函數(shù)執(zhí)行成功返回結(jié)果集對象mysqli_result,若語句沒有返回結(jié)果集,函數(shù)執(zhí)行成功返回true
- 方法
- affected-rows():返回影響行數(shù)
- errno():返回錯誤號
- error():返回錯誤信息
- insert_id():返回自動增長的id
- 關(guān)閉資源
- close():關(guān)閉連接
- 構(gòu)造方法
- mysqli_result:表達(dá)對數(shù)據(jù)庫的查詢所返回的結(jié)果集
- 屬性:
- $num_rows:結(jié)果集中記錄數(shù)
- $field_count:結(jié)果集中字段數(shù)
- $current_field:獲取當(dāng)前列的位置
- 方法:
- 處理記錄
- fetch_row():與mysql_fetch_row()一致
- fetch_assoc():與mysql_fetch_assoc()一致
- fetch_array():與mysql_fetch_array()一致
- fetch_object():與mysql_fetch_object()一致
- data_seek():與mysql_data_seek()一致
- free():釋放結(jié)果集
- 處理字段
- fetch_field():取出列信息,并作為對象返回
- fetch_fields():取出所有列信息,并作為對象返回
- field_seek():移動字段指針
- 執(zhí)行多條SQL語句
- multi_query(sql1[;sql2]):可執(zhí)行多條sql語句,語句間用“;”隔開,若有多個結(jié)果集,則均會被返回
- next_result():返回multi_query()的下一個結(jié)果集
- more_results():檢查是否含有下一個結(jié)果集
- 處理記錄
- 屬性:
- mysqli_stmt:預(yù)處理類
- 優(yōu)點:
- mysqli和mysqli_result能完成的功能,mysqil_stmt都能完成
- 效率比較高,執(zhí)行多條相同的sql語句,只有數(shù)據(jù)不同的話,不用重復(fù)傳語句,直接傳數(shù)據(jù)即可
- 防止sql注入,因為出入的數(shù)據(jù)只會當(dāng)做值類使用,不會當(dāng)做可執(zhí)行語句
- 創(chuàng)建對象
- 創(chuàng)建好mysqli對象后,使用該對象的stmt_init()方法初始化mysqli_stmt對象
- 準(zhǔn)備并發(fā)送語句
- 語句中的參數(shù)值要使用占位符“?”代替
- 使用mysqli_stmt中的prepare($sql)方法將語句發(fā)送到服務(wù)器準(zhǔn)備
- 不用創(chuàng)建mysqli_stmt對象,直接使用mysqli中的prepare($sql)準(zhǔn)備sql語句,并返回mysqli_stmt對象
- 語句中的參數(shù)值要使用占位符“?”代替
- 給占位符傳值(綁定參數(shù))
- 使用bind_param($type,$var1[,$var2...])綁定參數(shù)
- $type可以為i、d、s、b,分別代表integer、double、string和二進(jìn)制資源
- $type中的類型個數(shù)要與占位符相同,$var個數(shù)也要與占位符個數(shù)相同
- 給變量$var賦值
- 使用bind_param($type,$var1[,$var2...])綁定參數(shù)
- 執(zhí)行sql語句
- 沒有結(jié)果集返回
- 使用execute()方法執(zhí)行插入的參數(shù),返回boolean類型
- 有結(jié)果集返回
- 使用bind_result($var1[,$var2...])綁定結(jié)果集
- 使用fetch()執(zhí)行語句,每次獲取一條結(jié)果,并傳遞到bind_result()中的變量
- 使用store_result()執(zhí)行語句,將所有結(jié)果一次性取出,返回結(jié)果集,再用fetch()獲取每一條記錄
- result_matedate()返回結(jié)果集,用于獲取字段信息
- 使用result_free()釋放結(jié)果集
- 使用bind_result($var1[,$var2...])綁定結(jié)果集
- 沒有結(jié)果集返回
- 關(guān)閉資源
- 使用close()方法關(guān)閉
- 函數(shù)
- mysqli和mysqli_result支持函數(shù),mysqli_stmt基本都支持
- 優(yōu)點:
- mysqli:和連接有關(guān)的類
- 事務(wù)處理
- 建立表
- 表類型為MyISAM不支持事務(wù)功能,需要建立InnoDB類型的表
- 關(guān)閉自動提交
- autocommit():參數(shù)為0或false時,關(guān)閉自動提交
- 提交事務(wù)
- commit():提交事務(wù)(多條執(zhí)行后的sql語句)
- 回滾事務(wù)
- rollback():回滾事務(wù)(多條已執(zhí)行的sql語句)
- 建立表
- 其他方法
- set_charset($string):設(shè)置取出字符集
PDO
- 優(yōu)點:
- 更換數(shù)據(jù)庫時,不用更改代碼
- 缺點:
- 效率不如mysql和mysqli高
- 三個類
- PDO:代表 PHP 和數(shù)據(jù)庫服務(wù)之間的一個連接
- 創(chuàng)建PDO對象
- dpo($dsn,$username,$passd[,$array]):$dsn連接mysql數(shù)據(jù)庫時,設(shè)置為'mysql:host=ip:port;dbname=$string',$array為調(diào)優(yōu)參數(shù)
- DSN(data source name)數(shù)據(jù)源:包括主機(jī)位置、庫名和不同數(shù)據(jù)庫所需驅(qū)動
- 可用getattribute($attribute)查看屬性,使用setattribute($attribute,$value)設(shè)置屬性
- 執(zhí)行sql語句
- query($string):執(zhí)行有結(jié)果集返回的語句,返回預(yù)處理對象PDOStatement
- exec($string):執(zhí)行對表有影響的語句,返回被影響行數(shù)
- 設(shè)計錯誤報告
- 使用setAttribute()設(shè)置錯誤報告模式
- ERRMODE_SILENT:不顯示錯誤,開發(fā)人員自行檢查錯誤
- errorCode:返回錯誤號碼
- errorInfo:返回錯誤信息數(shù)組
- ERRMODE_WARNING:發(fā)生錯誤,顯示一個E_WARNING消息
- ERRMODE_EXCEPTION:發(fā)生錯誤,拋出PDOException異常
- 事務(wù)處理
- 使用setAttribute(),設(shè)置開啟事務(wù)處理,關(guān)閉自動提交
- 使用commit()提交已執(zhí)行的sql語句
- 使用rollback()回滾已執(zhí)行的sql語句
- 創(chuàng)建PDO對象
- PDOStatement:代表一條預(yù)處理語句,并在該語句被執(zhí)行后代表一個相關(guān)的結(jié)果集
- 作用
- 準(zhǔn)備一條語句
- 處理結(jié)果集
- 準(zhǔn)備并發(fā)送語句
- 語句中的參數(shù)值可使用占位符“?”
- 占位符“:占位符名字”代替
- 作用
- PDO:代表 PHP 和數(shù)據(jù)庫服務(wù)之間的一個連接
-
-
-
- 使用PDO::prepare($sql)方法將語句發(fā)送到服務(wù)器準(zhǔn)備,返回PDOStatement對象,存儲結(jié)果集
-
-
-
-
- 給占位符傳值(綁定參數(shù))
- 使用bind_param($key,$value)綁定參數(shù)
- “?”占位符
- $key設(shè)置為索引號,
- $value設(shè)置為傳送值
- 名字占位符
- $key設(shè)置為鍵名
- $value設(shè)置為傳送值
- “?”占位符
- 使用bind_param($key,$value)綁定參數(shù)
- 給占位符傳值(綁定參數(shù))
-
-
-
- sql語句執(zhí)行
- 使用execute()方法執(zhí)行已綁定參數(shù)的語句
- 使用execute($array),$array數(shù)組中添加參數(shù),避免綁定參數(shù)
- 記錄獲取
- 使用fetch()獲取結(jié)果集中的每一條記錄,返回索引和關(guān)聯(lián)混合數(shù)組
- 參數(shù)為PDO::FETCH_ASSOC,返回關(guān)聯(lián)數(shù)組
- 參數(shù)為PDO::FETCH_NUM,返回索引數(shù)組
- 參數(shù)為PDO::FETCH_BOTH,返回索引關(guān)聯(lián)混合數(shù)組
- fetchAll()獲取結(jié)果集的每一條記錄,返回二維數(shù)組
- 使用setFatchMode()設(shè)置獲取模式,就可以避免每次獲取都要設(shè)置模式
- 使用fetch()獲取結(jié)果集中的每一條記錄,返回索引和關(guān)聯(lián)混合數(shù)組
- 字段獲取
- columnCount()獲取字段數(shù)
- getColumnMeta()返回結(jié)果集中一列的元數(shù)據(jù)
- sql語句執(zhí)行
- PDOException:代表一個由 PDO 產(chǎn)生的錯誤。在自己的代碼不應(yīng)拋出一個 PDOException 異常
- 使用try catch捕獲各種異常,包括連接異常、sql語句異常等
-
mamcache/memcached
- 一個高性能的分布式的內(nèi)存對象緩存系統(tǒng)。通過在內(nèi)存中維護(hù)一個巨大的hash表,維護(hù)內(nèi)存中的數(shù)據(jù)
- 工作原理
- PHP第一次查詢數(shù)據(jù)時,會將數(shù)據(jù)存儲在mamcache中,下次查詢時,先訪問mamcache。
- 安裝
- Linux下安裝
-
基于libevent事件,所以必須先安裝libevent庫
-
- Windows下安裝
- 默認(rèn)端口11211
- Linux下安裝
- memcache命令
Command | Description | Example |
---|---|---|
get | Reads a value | get mykey |
set | Set a key unconditionally | set mykey 0 60 5 |
add | Add a new key | add newkey 0 60 5 |
replace | Overwrite existing key | replace key 0 60 5 |
append | Append data to existing key | append key 0 60 15 |
prepend | Prepend data to existing key | prepend key 0 60 15 |
incr | Increments numerical key value by given number | incr mykey 2 |
decr | Decrements numerical key value by given number | decr mykey 5 |
delete | Deletes an existing key | delete mykey |
flush_all | Invalidate specific items immediately | flush_all |
Invalidate all items in n seconds | flush_all 900 | |
stats | Prints general statistics | stats |
Prints memory statistics | stats slabs | |
Prints memory statistics | stats malloc | |
Print higher level allocation statistics | stats items | |
stats detail | ||
stats sizes | ||
Resets statistics | stats reset | |
version | Prints server version. | version |
verbosity | Increases log level | verbosity |
quit | Terminate telnet session | quit |
PHP中使用memcache
- 類:memcache
- 連接:memcache::connect($host,$port)
-
<span>1</span> <?<span>php </span><span>2</span> <span>$memcache</span> = <span>new</span><span> Memcache; </span><span>3</span> <span>$memcache</span>->connect("localhost",11211) or <span>die</span>("could not connect");
- 其他方法
- add:添加數(shù)據(jù)
- set/replace:修改數(shù)據(jù)
- get:獲取數(shù)據(jù)
- delete:刪除數(shù)據(jù)
- ......
- 何時使用memcache
- 數(shù)據(jù)庫中讀出來的數(shù)據(jù),方便下次使用
- 會話控制中使用
- 技巧
- 用sql語句作為key
- 用md5()修改sql語句,使sql語句變短,便于保存
會話控制:面向連接的可靠的連接方式,通過會話控制,判斷用戶的登錄行為
- cookie技術(shù)
- 服務(wù)器給客戶端的一個文件,通過客戶端的這個文件,保存用戶信息,服務(wù)器根據(jù)文件,區(qū)分用戶
- 設(shè)置cookie
- setcookie($key,$value,$time):頭信息,不能有任何輸出
- 獲取cookie
- 使用全局?jǐn)?shù)組$_COOKIE[]獲取cookie內(nèi)容
- 刪除cookieti
- 用setcookie設(shè)置$value為空或不設(shè)置,$time設(shè)置為0或不設(shè)置
- session技術(shù)
- 在服務(wù)器中保存用戶數(shù)據(jù),會產(chǎn)生一個SessionID,可使用cookie和url傳遞該id
- session配置
- 配置服務(wù)器端的php.ini
- 開啟會話
- session_start():讓php的核心程序?qū)⒑蛃ession有關(guān)的內(nèi)建環(huán)境變量預(yù)先載入到內(nèi)存中
- 開啟一個會話
- 基于cookie的session,使用該函數(shù)不能有任何輸出
- 返回已開啟的會話
- 開啟一個會話
- session_start():讓php的核心程序?qū)⒑蛃ession有關(guān)的內(nèi)建環(huán)境變量預(yù)先載入到內(nèi)存中
- 設(shè)置和獲取session
- 使用$_SESSION[]設(shè)置和獲取session
- session_id()獲取和設(shè)置session的id
- 刪除session
- $_SESSION=array();將session設(shè)置為空數(shù)組
- 刪除cookie中的session
- session_destory():銷毀session
- 基于url傳遞sessionid,設(shè)置url的參數(shù)為session_name,session_start()后,會自動尋找該參數(shù)
- 常量SID,當(dāng)用戶關(guān)閉cookie時,該常量表示session_name和session_id;當(dāng)用戶開啟cookie時,該常量為空
- 設(shè)置php.ini中的session.use_trans_sid=1,會使頁面跳轉(zhuǎn)(超鏈接、header、表單)后面自動添加SID
- session高級技術(shù)
- php.ini中,session的設(shè)置
- session_name:設(shè)置存在cookie以及SID中的session_name
- session.use_trans_sid:設(shè)置SID是否開啟,開啟后,可自動添加SID
- session.save_path:設(shè)置session文件的保存位置,如果不設(shè)置,則不生成session文件
- session.gc_maxlifetime:設(shè)置session文件有效時間,超過該時間session未刷新,session文件將失效
- session.gc_probability和session.gc_divisor結(jié)合使用,定義session垃圾回收概率,算法為session.gc_probability/session.gc_divisor
- session.use_cookie:設(shè)置session寫入到cookie中
- session.cookie_path:設(shè)置哪些文件的session寫入到cookie中
- session.cookie_lifetime:設(shè)置session的生命周期
- session.save_handler:設(shè)置session寫入方式及位置,當(dāng)值為user時,可使用session_set_save_handler()函數(shù)
- session_set_save_handler(open(),close(),read(),write(),destroy(),gc()):可自定義session文件的存儲路徑及存儲方式等
- 使用該函數(shù)定義了各個方法,像往常一樣使用session
- open():在執(zhí)行session_start()時,被調(diào)用
- close():在執(zhí)行session_write_close()時,被調(diào)用
- read():在調(diào)用open()后,被調(diào)用
- write():腳本結(jié)束時和session_write_close()執(zhí)行時,被調(diào)用
- destroy():當(dāng)session使用session_destroy()或者session_regenerate_id()被銷毀時,被調(diào)用
- gc():由session.gc_probability和session.gc_divisor決定,任何時候軍可能被調(diào)用?
- 具體用法
- 將Session寫入數(shù)據(jù)庫
- 將Session寫入Memcache
- php.ini中,session的設(shè)置
至此,PHP的基礎(chǔ)學(xué)習(xí)算是完成了,需要多做多學(xué),方能提高!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

用戶語音輸入通過前端JavaScript的MediaRecorderAPI捕獲並發(fā)送至PHP後端;2.PHP將音頻保存為臨時文件後調(diào)用STTAPI(如Google或百度語音識別)轉(zhuǎn)換為文本;3.PHP將文本發(fā)送至AI服務(wù)(如OpenAIGPT)獲取智能回復(fù);4.PHP再調(diào)用TTSAPI(如百度或Google語音合成)將回復(fù)轉(zhuǎn)為語音文件;5.PHP將語音文件流式返回前端播放,完成交互。整個流程由PHP主導(dǎo)數(shù)據(jù)流轉(zhuǎn)與錯誤處理,確保各環(huán)節(jié)無縫銜接。

在PHP中搭建社交分享功能的核心方法是通過動態(tài)生成符合各平臺要求的分享鏈接。 1.首先獲取當(dāng)前頁面或指定的URL及文章信息;2.使用urlencode對參數(shù)進(jìn)行編碼;3.根據(jù)各平臺協(xié)議拼接生成分享鏈接;4.在前端展示鏈接供用戶點擊分享;5.動態(tài)生成頁面OG標(biāo)籤優(yōu)化分享內(nèi)容展示;6.務(wù)必對用戶輸入進(jìn)行轉(zhuǎn)義以防止XSS攻擊。該方法無需複雜認(rèn)證,維護(hù)成本低,適用於大多數(shù)內(nèi)容分享需求。

要實現(xiàn)PHP結(jié)合AI進(jìn)行文本糾錯與語法優(yōu)化,需按以下步驟操作:1.選擇適合的AI模型或API,如百度、騰訊API或開源NLP庫;2.通過PHP的curl或Guzzle調(diào)用API並處理返回結(jié)果;3.在應(yīng)用中展示糾錯信息並允許用戶選擇是否採納;4.使用php-l和PHP_CodeSniffer進(jìn)行語法檢測與代碼優(yōu)化;5.持續(xù)收集反饋並更新模型或規(guī)則以提升效果。選擇AIAPI時應(yīng)重點評估準(zhǔn)確率、響應(yīng)速度、價格及對PHP的支持。代碼優(yōu)化應(yīng)遵循PSR規(guī)範(fàn)、合理使用緩存、避免循環(huán)查詢、定期審查代碼,並藉助X

1.評論系統(tǒng)商業(yè)價值最大化需結(jié)合原生廣告精準(zhǔn)投放、用戶付費(fèi)增值服務(wù)(如上傳圖片、評論置頂)、基於評論質(zhì)量的影響力激勵機(jī)制及合規(guī)匿名數(shù)據(jù)洞察變現(xiàn);2.審核策略應(yīng)採用前置審核 動態(tài)關(guān)鍵詞過濾 用戶舉報機(jī)制組合,輔以評論質(zhì)量評分實現(xiàn)內(nèi)容分級曝光;3.防刷需構(gòu)建多層防禦:reCAPTCHAv3無感驗證、Honeypot蜜罐字段識別機(jī)器人、IP與時間戳頻率限制阻止灌水、內(nèi)容模式識別標(biāo)記可疑評論,持續(xù)迭代應(yīng)對攻擊。

PHP不直接進(jìn)行AI圖像處理,而是通過API集成,因為它擅長Web開發(fā)而非計算密集型任務(wù),API集成能實現(xiàn)專業(yè)分工、降低成本、提升效率;2.整合關(guān)鍵技術(shù)包括使用Guzzle或cURL發(fā)送HTTP請求、JSON數(shù)據(jù)編解碼、API密鑰安全認(rèn)證、異步隊列處理耗時任務(wù)、健壯錯誤處理與重試機(jī)制、圖像存儲與展示;3.常見挑戰(zhàn)有API成本失控、生成結(jié)果不可控、用戶體驗差、安全風(fēng)險和數(shù)據(jù)管理難,應(yīng)對策略分別為設(shè)置用戶配額與緩存、提供prompt指導(dǎo)與多圖選擇、異步通知與進(jìn)度提示、密鑰環(huán)境變量存儲與內(nèi)容審核、雲(yún)存

PHP通過數(shù)據(jù)庫事務(wù)與FORUPDATE行鎖確保庫存扣減原子性,防止高並發(fā)超賣;2.多平臺庫存一致性需依賴中心化管理與事件驅(qū)動同步,結(jié)合API/Webhook通知及消息隊列保障數(shù)據(jù)可靠傳遞;3.報警機(jī)制應(yīng)分場景設(shè)置低庫存、零/負(fù)庫存、滯銷、補(bǔ)貨週期和異常波動策略,並按緊急程度選擇釘釘、短信或郵件通知責(zé)任人,且報警信息需完整明確,以實現(xiàn)業(yè)務(wù)適配與快速響應(yīng)。

PHPisstillrelevantinmodernenterpriseenvironments.1.ModernPHP(7.xand8.x)offersperformancegains,stricttyping,JITcompilation,andmodernsyntax,makingitsuitableforlarge-scaleapplications.2.PHPintegrateseffectivelyinhybridarchitectures,servingasanAPIgateway

選擇合適AI語音識別服務(wù)並集成PHPSDK;2.用PHP調(diào)用ffmpeg將錄音轉(zhuǎn)為API要求格式(如wav);3.上傳文件至雲(yún)存儲並調(diào)用API異步識別;4.解析JSON結(jié)果並用NLP技術(shù)整理文本;5.生成Word或Markdown文檔完成會議記錄自動化,全過程需確保數(shù)據(jù)加密、訪問控制與合規(guī)性以保障隱私安全。
