Zend Technologies
Zend Technologies
Zend Technologies 公司是一家網際網路基礎架構軟體公司,公司總部設在美國加利福尼亞州的庫比蒂諾,技術中心設在以色列特拉維夫的拉馬特甘,法國,義大利,德國均設立有辦事處。公司的技術開發及商業運作都以PHPWeb應用為中心,包括Zend Studio。
Zend是PHP公司,成立於1999年,由Zeev Suraski and Andi Gutmans兩位開源PHP的締造者和建築師共同創建,因此有了Zend名稱的由來。由於他們的國際技術的權威性,Zend公司和他的創建者在PHP以及開源團體中持續處於領導的核心地位,對於PHP的迅猛發展起到了強力推動作用。Zend公司是一個PHP應用的企業和個人都可以尋求到專業技術解決方案的PHP領先公司。
Zend公司推動PHP進入企業級應用。Zend公司針對PHP的應用陸續發布了至關重要的PHP網路應用平台產品和服務。PHP根據netcraft的數據表明,PHP已經超過ASP成為最流行的Web腳本語言,Zend Engine安裝在1500萬網站上。目前全世界範圍內,使用Zend有關Web應用產品的客戶超過8000家。
Zend公司的投資商是包括Azure Capital Partners、 Index Ventures和Platinum Venture Capita在內的非常有實力的投資公司,最重要的是IT行業領先的SAP和Intel也是Zend公司的投資商。目前Zend公司得到了來自IBM,Oracle,Sun公司的大力支持,和IBM,Oracle達成了戰略合作夥伴,共同推動PHP的發展。
Zend是一家PHP公司,成立於1999年,由Zeev Suraski和Andi Gutma兩位開源PHP的締造者和建築師共同創建,因此有了Zend名稱的由來。由於他們的國際技術的權威性,Zend公司和他的創建者在PHP以及開源團體中持續處於領導的核心地位,對於PHP的迅猛發展起到了強力推動作用。Zend公司是一個PHP應用的企業和個人都可以尋求到專業技術解決方案的PHP領先公司。
Zend公司推動PHP進入企業級應用。Zend公司針對PHP的應用陸續發布了至關重要的PHP網路應用平台產品和服務。Zend Engine安裝在1500萬網站上。目前全世界範圍內,使用Zend有關Web應用產品的客戶超過8000家。
Zend公司的投資商是包括Azure Capital Partners、Index Ventures和PlatinumVenture Capita在內的非常有實力的投資公司,最重要的是IT行業領先的SAP和Intel也是Zend公司的投資商。目前Zend公司得到了來自IBM、Oracle、Sun公司的大力支持,和IBM、Oracle達成了戰略合作夥伴,共同推動PHP的發展。
Zend公司的產品在2004年有了新的變化,將提供的服務分為三部分:
(1)PHP products商業產品;
(2)Professional Services專業服務;
(3)PHP Training and Certification培訓和認證。
商業產品包括開發類、安全類和應用類。另外廣泛應用的優化器Optimizer屬於免費產品,還有針對不同平台的中間產品,如WinEnabler、Zend Optimizer for IBM AIX等。開發類產品,包括Studio的不同版本(標準版,專業版和企業版);安全類包括編譯器Encoder和版本的控制工具Safeguard;應用類包含Performance Suit在內的監控和性能提高應用平台Zend Platform。
專業服務:Zend公司提供全方位的PHP商業關鍵應用的開發和調配,評估你的需求,確保應用的順利完成。具體內容包括應用設計和評估、代碼評估、遷移版本、擴張應用等。
培訓和認證:通過系統的培訓提高PHP技術,國際認可的Zend PHP 證書有助於提高自身價值。具體課程包括PHP A-Zend(A-Zend PHP系統培訓課程)、PHP Essentials(PHP基礎培訓課程)、Professional PHP Development(專業PHP開發課程)、PHP Certification Training(PHP認證培訓課程)。
目前Zend在中國已經建立Zend技術支持中心,其在國內的具體職責如下:
(1)提供Zend和PHP的相關信息。
(2)對國內的PHP用戶提供全方位技術支持。
(3)Zend公司全線產品的技術支持和當地化。
(4)提供PHP的培訓和教育。
(5)建設PHP愛好者和使用者協會。
(6)提供專業的技術交流平台。
訪問Zend技術支持中心的網站是www.phpchina.com。
Zend產品下載網址為http://downloads.phpchina.com/zend/。
Zend Studio是專業開發人員在使用PHP整個開發周期中唯一的集成開發環境(zde),它包括了PHP所有必須的開發部件。通過一整套編輯、調試、分析、優化和資料庫工具,Zend Studio加速開發周期,並簡化複雜的應用方案。
Zend Studio的特點包括:
(1)快速代碼開發與配置本地和遠程調試器;
(2)資料庫連通性&SQL工具團隊合作環境;
(3)完全PHP 4/PHP 5切換phpdocs/PHP文檔處理程序支持;
(5)50個以上樣品資料庫應用程序與Zend Platform™組合。
1 編輯文件
這個部分講述如何在Zend Studio中編輯一個文件。
如果想要編輯一個文件,你所需要做的就是打開Zend Studio客戶端並開始編寫代碼。而且,Studio客戶端還可以輕鬆實現許多高級的編輯功能。下面的例子使用了Zend Studio客戶端的代碼補全特性——Studio客戶端的一個節省時間的編輯特性。其他主要的編輯特性還包括書籤、實時錯誤提示、括弧提示、模板等。
總體來說,代碼補全自動顯示出已輸入代碼在PHP或者HTML中相關的補全選項。
這裡有一個例子:
(1)在主工具欄中單擊打開新文件。一個新的空白文檔就在編輯窗口中打開了。
(2)在編輯窗口中,輸入“<”字元。代碼補全窗口出現了,並且顯示一個HTML標記的列表。
(3)從列表中選擇html並且按回車鍵。HTML標籤就出現在編輯窗口中了。
(4)輸入“
(5)按Ctrl+space鍵然後輸入“pri”。PHP代碼補全出現了下一個匹配pri的列表。
(7)輸入“hello”並且按回車鍵。
2 使用項目功能
這個部分簡述創建一個項目的過程。
1.使用項目功能的好處在用戶打開一個項目時,Zend Studio客戶端自動處理所有項目相關的文件並且增加類和函數名到代碼補全列表。另外,還可以查找包含的丟失文件。
2.如何創建一個項目如果想定義一個帶有獨立特性的工作環境,可以創建一個新的項目。這些特性如調試配置、書籤和監視點等。
注意:項目定義文件的文件擴展名標誌為*.zpj。
創建一個項目的操作如下:
(1)從主菜單中,選擇項目→新項目。出現新項目對話框。
(2)輸入新項目的名字。更新相對應的路徑。在這一步,你可以跳過所有接下來的對話框並單擊完成。單擊繼續可以定義新項目專有的屬性。
(3)為了增加文件或者路徑到新項目中,單擊項目專區的“增加路徑”並瀏覽將要包含到項目中的文件或者路徑。
(4)單擊“繼續”按鈕繼續編輯,或者單擊“完成”按鈕跳出。
(5)接下來的窗口顯示的是在用戶化的調試選項窗口中定義的默認設置。如果你想在新的項目中應用專有的調試設置,取消用戶系統默認的選項框的勾選並修改設置。
(6)選擇調試模式。對於一個遠程調試來說,你可以更改伺服器URL和埠,而且還可以指定臨時輸出文件的存放目錄。
注意:這些設置可以在項目屬性對話框中找到。在任何時候想看一個項目的調試設置時,打開項目並進入項目→項目屬性。
(7)單擊“完成”按鈕即可。
3 Zend Studio代碼補全
代碼補全的兩種代碼類型:PHP和HTML。代碼補全範圍包括:類、函數、變數、常量、關鍵字、HTML標記、HTML屬性、HTML屬性的值,等等。
代碼補全提示:
(1)增加@var標記來提示類定義;
(2)通過一個註釋,可以把一個變數賦值為一個實際的類。
模版的作用是通過縮寫插入代碼框架或者代碼段。模版功能支持的代碼類型是PHP、PHPDoc、HTML、JavaScript or CSS。通過模板功能,可以方便地在團隊中共享代碼。
1.代碼片段代碼片段是指可以重複使用的一些代碼片段。通過使用這些代碼片段,我們可以推動開發流程的速度。我們可以查看和使用已經保存的代碼片段,可以創建和更新自己的代碼片段,並從Zend的在線資料庫中更新代碼片段。
2.代碼導航——書籤在編輯的文件裡面使用書籤來標記代碼,這個功能可以讓你很快地在許多腳本文件中找到代碼進行編輯。
3.代碼導航——轉到源 轉到源具有過濾和自動更新、快速、方便和直觀、提高切換效率,
“Go to Resource”對話框
4 Studio的PHP的調試
ZDE的調試方式分為內部調試和伺服器調試。內部調試是指使用ZDE自帶的本地PHP4或者PHP5來進行調試。伺服器調試使用的是遠程的伺服器來運行位於伺服器上面的PHP腳本。內部調試是開發工程師在編寫代碼的時候,在上傳之前的調試。伺服器調試主要是以調試項目為主。
1.內部調試內部調試使用的是ZDE自帶的PHP版本。在最新的ZendStudio5.1.0裡面分別為PHP 4.4.1和PHP5.1.1。
調試的時候用到的一系列工具如下。
(1)調試信息窗口:顯示調試過程和語法監測等信息。
(2)變數、觀察窗口:查看相關變數、函數、類和表達式的信息。
(3)堆棧窗口:監控堆棧的調用和參數的傳遞。
(4)調試正在調用的或者是已經調用的函數:使用引入、引出、斷點等進行調試。
(5)控制調試的節奏:使用完全 或者逐行調試,並且用斷點和執行到游標處 進行配合。
(6)查看實時的輸出結果:查看Text或者瀏覽器輸出兩種調試結果。
(7)查看緩衝區:如果代碼裡面有緩衝區應用,可以直接查看緩衝區的代碼。
2.伺服器調試
伺服器調試
伺服器調試(遠程)可以讓開發人員調試上傳的PHP代碼,從而進行項目級的調試。也就是說遠程伺服器上面的ZDE Server將為你實現調試的各種功能(如果伺服器已經有ZP,不用再另行安裝ZDEServer)。
此外伺服器調試的時候,也可以使用本地副本(Tools | Debug | Debug URL 裡面選擇可以使用本地副本就可以了)。這種情況下,ZDE Server在調試被調用的PHP文件的時候,查找的順序將是:ZDE打開的文件→ZDE打開的項目的文件→伺服器上的文件。
使用伺服器進行調試也較Debug URL,但是這與傳統的IE調試有著很大的不同。它具備了以下幾個特點:
(1)用ZDE內嵌的瀏覽器訪問PHP代碼,方便與ZDE Server的互通。
(2)調試交互數據的表單、腳本,如POST等。
(3)調試返回的信息可以分別體現在內嵌的瀏覽器和調試輸出窗口。
(4)自動載入調用的PHP腳本,並且在該腳本的第一行處停止,等待下一步指示。
(5)調試的過程中同樣可以查看參數、堆棧、監視點(用戶指定的特定參數)等。
5 斷點跟蹤
可以在代碼的任意行設置斷點。設置斷點的目的是,讓PHP腳本運行到該斷點的時候自動停止運行,以便查看變數、緩衝等數據。可以通過滑鼠右鍵、F9快捷鍵來設置斷點。
6 堆棧與輸出緩衝
PHP的運行的堆棧基本上是指每一個PHP腳本,堆棧在調試的時候顯示出的具體的信息需要配合斷點調試或者逐行調試才能看到。信息顯示的是運行的PHP文件、停止的行數、運行的函數等信息。
注意:如果在一個PHP文件中有引入別的PHP文件,那麼堆棧的個數將等於該PHP文件本身加上所有引入的別的PHP文件的個數。
7 跳入與跳出
跳入與跳出主要是針對堆棧來說,在斷點或者逐行的調試中,我們可以靈活地跳入或者跳出某個堆棧來看某個堆棧的變數和運行情況。
8 Studio的版本控制
Studio集成了CVS和Subversion等版本管理工具的客戶端,可以方便地進行團隊開發。
Zend優化器——優化你的PHP代碼。
由於舊的版本和PHP 4.3.10兼容性有問題,強烈推薦對Zend Performance Suite,Zend Accelerator,Zend Studio Server和Zend WinEnabler使用者,更新至最新版本同樣推薦將PHP升級到PHP 4.4.6 or PHP 5.2.1。運行編譯過的代碼文件和提高腳本程序的性能——免費。
優化器在提高PHP的運行速度的同時,可以完全免費的運行被Zend Encoder and Zend SafeGuard Suite編譯過的代碼。
利益:確保使用者安全運行被Zend Encoder編譯過的文件,提高運行性能40%。
對於企業級的性能提高,如果希望伺服器的吞吐量提高25倍,請試用Zend Performance Suite。Zend Performance Suite的性能提高科技是特別幫助PHP基礎的大流量的網路,用於提高反應速度和程序處理的效率。對於PHP versions低於4.0.4,請使用Zend Optimizer 1.2.0.,下載前一個版本。
安裝:需要指定系統Web伺服器的所在目錄和php.ini配置文件的目錄。
Zend Optimizer優化器的系統需求如下:
(1)支持的操作系統、平台和操作系統版本:
—Linux x86
—Linux x86-64
—Linux Power
—Solaris Sparc 8, 9, 10
—Solaris x86 9, 10
—FreeBSD x86 5.x, 6.x
—Windows x86 2000, XP, 2003
—OS X Mac Power
—AIX pSeries 5
(2)支持的Web伺服器:
—Apache 1.3.x
—Apache 2.0.x (Prefork mode only)
—Apache 2.2.x (Prefork mode only)
—IIS 5, 6
(3)支持的PHP版本:
—4.2.x up to 4.4.x
—5.0.x, 5.1.x, 5.2.x
(4)OS X Mac下使用的PHP版本:
—4.3.x up through 5.2.x
1概述
Zend Platform 是唯一的一個可以讓你的應用持續穩定運行的PHP生產環境。
在為IT個人和企業提供企業級的高穩定性的應用的前提下,Zend Platform可以提供高性能和擴展性等特點,並讓用戶在你的Web上以最好的響應速度愉快地瀏覽。
Zend Platform 也是唯一地能夠保證穩定服務的平台。它通過PHP監控和即時的錯誤處理系統,來代替傳統的錯誤定位方式,讓開發和維護工作輕鬆而愉快。
你已經花了很多時間和金錢來開發最新的PHP應用。現在就讓它穩定地高效地運行起來。
1.Zend Platform對於企業的價值現在是讓你的應用實現穩定、高擴展性、快速響應的時候了。Zend Platform讓Web和資料庫伺服器根據負載和應用複雜程度的提高持續穩定運行。請加入我們眾多的客戶當中,他們來自於眾多的企業,並從Zend Platform上獲得空前的利益。
(1)高擴展性:在降低生產成本的同時,響應更多的用戶請求。
(2)強有力的優勢:確保PHP應用得到最高的性能。
(3)更高的效率:無縫的運行和配置管理。
(4)令用戶滿意的瀏覽:提高用戶的瀏覽效果,令用戶滿意並持續對網站的瀏覽。
2.強大的管理和錯誤處理方案Zend Platform能精確地找出瓶頸問題和運行時的錯誤,及時發現腳本或者函數執行緩慢,發現空白或者不完整的頁面,同時還能隨時注意系統的負載和所有類型的PHP和資料庫的錯誤。所有這些都可以用滑鼠輕鬆地進行配置。另外,Zend Platform的新的Session Clustering的模塊將極大地提高你的PHP應用的擴展性。
3.Zend Platform 具備的特點(1)中心控制台:顯示PHP運行環境的各個方面。
(2)綜合的應用:傑出的運行概要分析和性能監控。
(3)跟蹤調試:
— 重現錯誤並保存完整的錯誤文檔。
— 具體的警報信息自動發送至相關的IT人員。
— 在線調試&實時的錯誤修正。通過Zend Studio集成環境實現。
(4)性能提高:
— 運行中實時的代碼優化。
— 代碼加速和預編譯。
— 完善的緩存解決方案。
— 文件下載優化和加速。
— 對PHP4和PHP5完善的支持。
(5)獨特的功能:
—PHP Session Clustering
—PHP Intelligence
—PHP Performance Management
—PHP Configuration Control
—PHP/Java Integration Bridge
(6)Session 跨伺服器:
— 性能提高(up to x10)。
— 加鎖機制保證數據的完整性。
— 與原來的PHP腳本無縫連接。
— 獨立於負載均衡伺服器。
— 線性地升級性、方便地添加伺服器。
(7)即裝即用的解決方案:
— 安裝&配置方便、簡單。
— 在Web伺服器上面以PHP的模塊安裝。
— 較低的生產環境配置要求。
— 無須重新編譯PHP和Apache。
— 無須更改現有代碼。
2 快速使用說明
1.安裝注意事項對ZendPlatform的安裝文件解壓后,運行./install就可以打開安裝界面。根據安裝界面的提示進行操作就可以了。在此過程中請注意以下事項:
(1)請確認伺服器的內存在正常運轉的情況下,有足夠的剩餘空間(比如100M)。
(3)Apache的執行路徑,便於ZendPlatform重起Apache。
(4)選擇中央控制還是節點的ZendPlatform模式。如果選擇節點,需要把節點註冊到中央控制中心。
錯誤處理機制。如果安裝過程中出現錯誤,請運行<安裝目錄>/Zend/bin/support_tool.sh。選擇第三項“Collect information and send it by E-mail”,在“Recipient's E-mail”填入技術支持工程師的E-mail地址。系統將會自動收集相關信息併發送給技術支持工程師以便分析原因。
2.關鍵配置說明安裝了ZendPlatform以後,為了讓ZendPlatform穩定地發揮其性能。需要對以下幾個關鍵設置做配置,關鍵設置集中在ZendPlatform的性能管理上。進入Performaceàsettings:
—Code Acceleration:
Accelerator Memory:設置在32與64之間,如果伺服器需要可以適當調大。但是總體來說不需過大。
—Dynamic Content Caching:
Maximum Cache Size:一般情況下設置1G或500M就已經足夠,但是請不要保留默認的“Unlimited”設置。
Minimum Free diskspace:表示最小空閑空間容量,所以請確定其值是否小於現在硬碟空閑空間的大小。
3.重要功能位置說明如果您是第一次使用ZendPlatform,那麼以下幾個功能將會是需要的。因此,我們列出了這些選項的路徑,
項目路徑及說明
項 目 | 路 徑 | 附加說明 |
用戶管理 | Zend CentralàUser Management | 添加用戶前先添加用戶組 |
伺服器配置克隆 | Zend CentralàClone Wizard | 在伺服器之間進行配置的克隆 |
配置警報規則 | PHP IntelligenceàConfigure Alert Rules | 配置監控的強度 |
配置性能管理 | PerformanceàSettings | 對4個組件分別做管理 |
Cache文件 | PerformanceàFile View | 對文件做cache設置 |
3 用Zend Platform實現Session跨伺服器
1.背景
網際網路或者萬維網的核心是HTTP協議(超文本傳輸協議)。同時,因為HTTP協議的無界性,網站應用無法將瀏覽器訪問與不同的伺服器連接起來。從本質上說,這意味著用戶從一個業務進入到另一個業務時,新的伺服器有可能無法得到該用戶的信息。
為了解決這個問題,一個新的概念“Cookies”被引入了。所謂的“Cookies”指的是一個小型數據結構,這個存放在用戶本地的數據是被用來儲存用戶的信息。當該用戶訪問一個網站的時候,網站的伺服器從用戶本地得到用戶數據后經過處理再把結果返回給用戶。所以,給用戶的感覺是網站似乎記住了該用戶的信 息。同時,用戶可以方便地在登錄該網站時使用原先的設置,甚至不需要輸入密碼進行登錄。“Cookies”使用最多的領域是記錄用戶的相關配置信息或者是在一個在線商店所採購的採購記錄。
然而,“Cookies”數據保存在用戶本地的特點容易造成兩個方面的負面效果。第一是過長的“Cookies”數據的保存與傳輸都將是一個不小的資源消耗。第二是對於一些重要的數據,保存在用戶本地容易造成數據錯誤,從而給用戶的訪問帶來負面影響。為此,基於“Cookies”的HTTP Session概念產生了。代替傳統的把所有的信息存儲在用戶本地的做法,Session 架構把用戶的信息儲存在伺服器端,而在用戶端只保存了區分佈不同用戶信息的唯一的“Session ID”。
PHP是通過內嵌的擴展來實現Session應用的,並且該擴展是基於地層的架構。PHP對Session的支持允許網站實現大量的註冊和訪問量。
可是,當要在一個伺服器集群實現PHP Session的應用時,問題變得複雜起來。
經典的多伺服器集群包含了一組伺服器,在每台伺服器上面載入相同的PHP應用。同時,伺服器集群的出口由一個下載均衡伺服器來實現,下載均衡管理器在伺服器之間分配流量保證各個伺服器的負載是均衡的。這種應用使得網站應用突破了單台伺服器的傳統模式,而由伺服器集群來承載同一個PHP應用。很明顯,這種集群伺服器的應用提高了PHP業務的性能並減低了終端用戶的訪問時間。
2.Session 集群化管理
Zend之前的一些解決Session不能跨伺服器的方案如下。
(1)負載均衡Session方案。
—
SessionID與伺服器的對應很難成功地保持。在沒有HTTP協議校驗的前提下,HTTP協議很容易丟失目標。而且,因為負載均衡的性能問題使用HTTP協議進行校驗是不穩定的。
— 如果在負載均衡伺服器上面啟用Session定向,將不利於負載均衡伺服器本身的運行特性。尤其是在使用了流行的NAT技術后,影響更加明顯。
— 為了達到SessionID與伺服器的對應目的,負載均衡將需要花費相當昂貴的系統消耗來實現。
— 當負載均衡伺服器為了實現Session功能的時候,它的負載將會急速上升,並逐漸地成為伺服器集群升級的瓶頸。在集群伺服器上添加伺服器將會因為負載均衡的瓶頸問題而變得困難。
(2)通過NFS系統來共享Session的方案。
因為負載均衡實現Session共享的局限性,有人開始嘗試用NFS來共享。通過集群中的NFS文件伺服器來實現,從而來實現集群里的伺服器的 Session應用。甚至有人覺得通過負載均衡伺服器來實現Session共享會變得沒有必要,而且可以使得網路的硬體投入得到減少,DNS輪詢都能夠滿足Session的應用。但是這種方法同樣存在著一些局限性:
— 數據完整性:NFS的文件加鎖機制在許多場合下是不合適的。這種情況有可能導致Session的數據很容易出錯。
— 速度緩慢:從NFS文件系統提取Session數據遠遠比本地提取耗時,同時網路的架構也將影響數據的傳輸速度。
— 將所有的數據都存儲在一個伺服器上意味著這是一個系統故障點:如果NFS伺服器出現了故障,整個PHP應用系統將無法工作。為此就必須為NFS伺服器配置更多的設備和更完善的電源管理。但是,這也是一個很大的資金投入,同時,他還是沒有從根本上解決單一故障點的問題。因為NFS的網路介面還是一個。
— 系統升級:把系統所有的數據都存放在一個中心節點,伴隨著的一個問題是系統的升級變得困難,而中心點就是系統升級的一個瓶頸。所以,往集群裡面增加伺服器所帶來的效益將因為這個瓶頸問題而被降低。
— 安全性:NFS一直以來都被認為是一個安全性比較差的協議。許多專業的IT公司也因此放棄了NFS網路文件系統。
— 持續的硬體投入。
(3)採用資料庫來存放Session信息
第三種解決Session不能跨伺服器的方法是把共享的Session放在一台相應的資料庫伺服器中。這種方法也有效地解決了NFS文件系統方案帶來的數據完整性和有效性等問題。但是這個方案同樣地存在著某些不足:
— 速度:相對本地存儲來說,資料庫伺服器將需要在資料庫處理上面佔用整個PHP應用平台的時間。
— 故障點:資料庫伺服器還是存在著單一故障點的問題。
— 系統升級:使用資料庫來存儲Session這個方案同樣存在著升級困難的問題。而這個問題在考慮資料庫伺服器的處理能力和負載的時候會顯得尤為突出。
目前,通用的解決方案並不能滿足PHP集群化應用發展的需求。總體來說,有以下幾個方案的困難需要解決。
(1)系統升級的瓶頸問題:目前已有的解決方案總是把問題集中在一個單一的中心節點上面。為此,限制了其方案的處理能力,為集群應用的發展造成了困難。
(2)性能:目前已有的解決方案往往需要過度犧牲中心節點的系統資源,所以中心節點的硬體投入比較大。
(3)故障點:目前已有的解決方案都需要一個中心節點,為此整個系統存在著單一故障點的問題。這也意味著系統在運行過程中存在著較大的風險。
3.Zend 的解決方案
Zend公司是應許多客戶要求的情況下,開始Session clustering 模塊的開發的。許多客戶一直被實現Session共享而帶來的系統消耗等問題而困擾。作為PHP發展的主要推動者,Zend公司強烈意識到這個問題的嚴重性。客戶反映的問題主要是集中在Session共享的安全性和多餘資源投入。在Zend的Session共享的解決方案出現之前,客戶往往要搭建複雜和昂貴的框架添加資料庫伺服器等硬體來實現Session共享。但是這樣的框架還經常無法提供穩定、可靠的Session跨伺服器的解決方案。而且,這種複雜的框架還經常給商業應用的穩定性帶來錯誤和潛在的危險。
Zend新的Session clustering的模塊(Zend Platform的部件之一)就是為提供一個綜合的Session跨伺服器的解決方而開發的。並在這個方案中,有效地解決了上述幾個解決方案存在的問題。更為重要的,沒有為現有客戶增加成本。
在Zend Session clustering的解決方案中,Sessions“居住”在它第一次被生成的伺服器上。同時,這些Session可以別同一個集群伺服器所共享。這意味著Zend的解決方案從根本上解決了Session不能跨伺服器的問題,並提供了較高的性能。同時,它的系統升級特性也可以讓客戶能有效地使用現有的系統資源,並簡便、迅速地升級。
Session集群管理的幾大部件:
(1)Session的存儲:可以選擇存儲在內存或者是存儲在硬碟並在內存進行緩存。
(2)SCD守護進程:Session clustering 守護進程,把Session信息從Session被存儲的地方提取出來提交給PHP engine,或是從集群里別的伺服器上提取並提交給PHP engine。
(3)mod_cluster PHP擴展:是一個PHP的Session處理負責與SCD守護進程的通信。
SC架構
Zend的Session clustering模塊使用了強大的加鎖和數據完整性機制來實現Session數據的安全性。在使用Session clustering時,可以隨時地切換兩種不同的Session存儲模式:硬碟或只在內存。這種存儲方式也提供了錯誤恢復的功能,因為如果發生了不可預測的故障時,能夠及時恢復Session數據。
Zend的Session clustering 模塊對現有的PHP的兼容性很強,同時不影響其他擴展的正常使用,也不需要修改任何代碼。Zend Platform的Session clustering的解決方案就是集成了一個PHP的擴展。同時,在PHP.ini裡面也可以選擇是用現有的解決方案還是Session clustering模式。
Zend的Session clustering模塊從技術上來說,比現有的幾個解決方案都更加成熟,也是現今唯一的能迅速實現系統升級的解決方案。Session clustering用較低的成本來實現PHP的集群應用,並可以給客戶帶來無法比擬的性能、穩定性和數據完整性。
Zend的Session clustering的解決方案也是目前唯一的一個能夠集成到PHP的解決方案。因為實現Session clustering的設計與代碼編寫都是在PHP的架構下實現的。
下面列出的是Session clustering與其他方案的比較:
(1)線性系統升級:在系統架構中不再存在瓶頸問題。新加入的伺服器能有效地發揮出應有的性能效益。同時,Session clustering 也不會給現有的網路架構和設備增加額外的負擔。
(2)速度優勢:經過壓力測試,Session clustering 模塊是現有的Session跨伺服器解決方案的4~6倍的速度。
(3)無故障點:如果因為不可預測的原因,有一台伺服器停止服務了,損失的也只是那一台伺服器的Session數據,而不是整個系統。損失的數據可以迅速在其他的伺服器上重新建立。
(4)安全性:Session clustering’s內在的數據完整性和加鎖機制可以實現強大的Session應用。並允許高用戶負載下的商業應用。
(5)錯誤矯正:Session clustering可以選擇把Session數據存儲在硬碟當中。從而可以從系統或者內存的出錯中恢復過來。
(6)Session clustering試你的資金投入均勻分佈在伺服器機群中:Session clustering可以與任何的負載均衡技術環境運行(包括DNS輪詢)。
(7)強大的兼容性:Zend的Session clustering解決方案提供了強大的集成特性,可以兼容現有的代碼和PHP應用。現有的PHP項目可以直接移植到Session clustering解決方案當中應用。
4.用Zend Platform 做緩存處理
作為ZendPlatform中性能管理的強大組件,動態內容緩存能為大幅度地提高網站的性能。同時,為了更好地讓這個組件發揮它的強大作用,在對文件做Cache的時候,需要注意以下幾個方面:
(1)Cache的配置。
(2)如何對PHP文件做Cache。
(3)PHP文件的Cache條件。
(4)ZendPlatform API。
1.Cache的配置列出的是動態緩存的配置選項。這裡需要注意的是Maximum Cache Size配置選項,默認的設置是“unlimited”,這裡建議改為一個固定值,同時對“Minimum Free Diskspace”的設置是表示當磁碟空閑空間少於設定值時,不再進行Cache操作,這個設置需要根據磁碟的具體應用而定。
2.如何對PHP文件做Cache對Cache做了配置之後,如何對文件進行Cache呢,或者在哪裡對文件做Cache呢?在Performance功能里的File View組件可以實現此項功能。“File View”選項,列出了伺服器各個域名的發布目錄下的所有文件。在這裡,我們可以對文件進行Cache。默認的文件狀態是加速狀態。單擊文件名前面的選項框,選中后單擊列表頂部的“Cache”按鈕就可以完成對一個文件的Cache。當然,可以對多個文件和文件目錄做整體Cache。只需要注意文件是否滿足Cache的默認設置要求。
3.PHP文件的Cache條件作為一門動態的Web應用語言,PHP具備了許多種數據傳遞方式。例如,GET、COOKIE、Session等都是數據交互的方式。當一個文件通過ZendPlatform的GUI界面被Cache的時候,它的執行結果將會被保存在指定的緩存區,如果第二個訪問該文件的請求到達時,ZendPlatform將根據Cache條件進行判斷,看時候需要重新執行文件。如果根據Cache條件被緩存的文件已經達到訪問的要求,ZendPlatform將直接把緩存區中該文件的執行結果返回給用戶。所以Cache的條件在Cache處理的過程中,起到了至關重要的作用。
狀態控制選項說明
選 項 | 說 明 | 備 注 |
None | 當緩存中沒有相應數據版本的時候,重新執行文件 | |
Except | 除了指定的變數其他的變數變化時,重新執行文件 | |
Exist | 當緩存中有相應的變數存在,重新執行文件 | |
Not Exist | 當緩存中沒有相應的變數存在,重新執行文件 | |
Equal | 當緩存中有相應的變數存在並等於某值時,重新執行文件 | |
Not Equal | 當緩存中有相應的變數存在並不等於某值時,重新執行文件 |
除了特殊的應用以外,在一般情況下建議使用默認的“None”設置。下面以COOKIE為例,介紹對PHP文件做Cache的條件控制,
Cache的條件控制
列出了兩個Cache的條件,第一個是AllGET選項,表示當訪問請求包含的變數包含新的值時重新執行文件,並保存到緩存區。第二個是COOKIE選項,舉例以“username”這個變數為Cache條件,當Cache中的COOKIE中的“username”變數出現新的值的時候,重新執行文件,並保存到緩存區。
4.ZendPlatform APIZendPlatform的GUI界面為用戶提供的是“out-of-the-box”的功能,屬於即裝即用的功能,不需要對程序本身進行修改。同時,為了最大限度地發揮PHP的性能,ZendPlatform還提供了一系列API編程介面。該API介面把Cache的範圍縮小到單個函數,以代替整個文件的輸出。ZendPlatfrom的API是直接內嵌在PHP代碼裡面的,可以實現函數輸出值或資料庫訪問值的緩存和緩存控制。最常見的ZendPlatform的API是數據緩存(Data Caching),使用數據緩存最大的應用是社區、論壇系統。
Data Caching(數據緩存)獲取的是PHP或者用戶定義的函數的執行結果,並以字元串的形式進行緩存。通過使用serialize和unserialize這兩個函數還可以對數列和對象進行緩存。對於直接產生文件輸出的函數,我們不建議對它進行緩存,因為如果它被緩存了將不會再被執行,從而導致文件沒有輸出。數據緩存中使用的函數包括output_cache_fetch,output_cache_put和output_cache_get。
為了更好地應用Zend提供的API函數,這裡提供了5條建議:
(1)產生輸出的循環使用ZendPlatform的API可以將此代碼修改為:
PHP代碼:
$forums = unserialize(output_cache_fetch("ForumsList", "serialize(listForums())", 600));
?>
如果在緩存中有“ForumsList”的數據,將直接從緩存中提取,從而繞過了執行程序並從資料庫提取的環節。
1.Zend Guard概述Zend Guard可以實現對PHP應用的腳本進行加密保護和對PHP應用的產品進行商業許可證管理。
Zend Guard可以為許多軟體生產商和IT服務提供商提供安全的完善的加密和安全的產品發布系統。可以輕鬆實現產品發布的管理。
Zend Guard由兩個關鍵的組件組成:Zend Guard’s encoder和Zend Guard’s license manager,
2.產品特點(1)PHP應用的腳本進行加密保護和對PHP應用的產品進行商業許可證管理。
(2)增加IP的使用限制(可以防護複製應用)。這樣可以防止PHP腳本被配置在其他的伺服器而運行。
(3)可以為IT服務提供商提供解決方案。這樣,他們的代碼就不會被輕易地修改,以便他們進行技術支持工作。
(4)可以讓軟體發布商業的PHP產品進行靈活多樣的許可證管理。
(5)多樣的許可證管理包括用戶併發數、時間控制、網路分段控制、伺服器硬體控制等。
3.用Zend Guard來保護PHP(1)發布加密以後的PHP應用產品。
(2)保護PHP代碼的知識產權。
(3)防護代碼的反編譯,代碼經過模糊處理和加密的雙重處理。
(4)幾秒鐘時間迅速地模糊處理和加密整個PHP項目。
(5)用最新的代碼優化技術在加密的過程中對代碼進行優化。
http://www.phpchina.com
目錄