比如說PECL裡有兩個Memcached的模組,Memcache和Memcached,目前大部分PHP環境裡使用的是名字裡不帶d的Memcache版本,這個版本釋出的比較早,是一個原生版本,與之對應的帶d的Memcached版本則是建立在libmemcached的基礎上,所以說Memcached版本的功能更全一些。
安裝Memcached版本的PHP模組
wget http://download.tangent.org/libmemcached-0.35.tar.gz
tar zxf libmemcached-0.35.tar.gz
cd zxf libmemcached-0.35.tar.gz
cd libmemcached-0.35 🎜>./configure
make
make install
wget http://pecl.php.net/get/memcached-1.0.0.tgz
tar zxf memcached-1.0.0.tgz
cd memcached-1.0.0
phpize
./configure
make
make install
開啟php.ini加上:
extension = "memcached.🎜>開啟php.ini加上:
extension = "memcached.>這樣安裝就結束了,你可以透過下列指令來確認:
php -m | grep mem
示範Memcached版本的新功能
先虛構一個問題,假設counter初始值是一個整數,不使用increment方法,透過get/set完成每次加一。
在Memcache版本裡,我們只能按照大致如下的方式來進行:
$m = new Memcache();
$m->addServer('localhost', 11211);
$ v = $m->get('counter');
$m->set('counter', $v + 1);
由於get/set這兩個動作無法作為一個原子來操作,所以當多個進程同時處理時,會出現失去的可能,更惱人的是,你根本就不知道什麼時候會遺失。
再看看Memcached版本裡,我們是如何做的:
$md = new Memcached();
$md->addServer('localhost', 11211);
$v = $ md->get('counter', null, $token)
$md->cas($token, 'counter', $v + 1);
cas是Memcached版本裡提供的功能,說穿了就是一個樂觀鎖的功能,如果你把$token的值var_dump出來,你會發現$token其實就是一個版本號,如果透過get得到的$token版本號在cas的時候不對應,就表示已經有別的操作更新了,此時cas操作會失敗,至於如何繼續操作,就看你自己了。
註:如果你想手動重現衝突的情況,可在get和cas之間sleep若干秒,並拷貝兩份腳本,先後執行。
順便說一句,建議的Memcached版本模組的雜湊設定如下:
$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$md->setOption(Memcached:: OPT_HASH, Memcached::HASH_CRC);
總結
Memcached版本還有很多Memcache沒有的功能,例如透過getByKey, setByKey等自動支援多個伺服器,就不贅述了,該用哪個擴充已經不言自明了。
補充:http://code.google.com/p/memcached/wiki/PHPClientComparison
以上就介紹了memcache PHP模組 Memcached功能多於Memcache,包括了memcache方面的內容,希望對PHP教程有興趣的朋友有所幫助。

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。

PHP会话对应用性能有显著影响。优化方法包括:1.使用数据库存储会话数据,提升响应速度;2.减少会话数据使用,只存储必要信息;3.采用非阻塞会话处理器,提高并发能力;4.调整会话过期时间,平衡用户体验和服务器负担;5.使用持久会话,减少数据读写次数。

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

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

Dreamweaver Mac版
視覺化網頁開發工具