php配備yii架構(轉)

來源:互聯網
上載者:User
php配置yii架構(轉)

yii具有很多當今web2.0開發所需要的特性。下邊是一個簡短列表。

?

MVC設計模式 :yii在WEB設計中採用經過驗證的技術,可以較好的把顯示與邏輯分離。

DAO,活動記錄:yii充許在對象方面建立資料庫模型,儲存長而重複語句。

整合jquery:最流行的javascript架構之一,苦於jquery可以定屈非常高效並且多功能的javascript介面

表單輸入驗證:yii可以很簡單啊安全的採集表單輸入。具有一整套驗證方法確保輸入資料的正確,還有輔助的方法與組件,在驗證失敗時,提示錯誤資訊。

WEB2.0組件:jquery提供的一套web2.0組件,可以自動完成輸入欄位,樹形視圖等等。

驗證與授權:yii內建驗證。通過分級的基本角色存取控制提供授權。

主題:可以立即更改yii應用的主題。

WEB服務:yii支援自動複雜的WSDL服務說明的產生和服務要求處理的管理.

國際化和本地化:yii支援資訊翻譯,日期時間格式化,數字格式化和介面本地化。

分層緩衝計劃:yii支援資料緩衝,頁面緩衝,片斷緩衝和動態內容。且緩衝的儲存介質可以在不改變應用代碼下被更改。

錯誤處理和日誌:錯誤被處理並且很人性化的顯示,日誌資訊可以實現分類,過濾,並可以路由到不同的目的地。

安全:yii提供許多安全措施保證WEB應用阻止網路攻擊。包括:防止跨站指令碼,防止偽跨網站請求,防止竄改cookie等等。

遵守xhtml:由yiit組件和命令列工具產生的程式碼遵守xhtml標準。

自動代碼產生:yii提供自動產生所需代碼的工具,比如:應用程式框架,CRUD應用等。

完全的物件導向:yii架構遵守嚴格的物件導向的程式設計模式。不定義任何全域函數或變數。所定義的類階層給予最在程度的可用性和可定製性。

支援第三方代碼:yii可以很好的支援第三方代碼。例如,可以在YII應用中使用PERA或者zend framework。

詳細的文檔:每一個方法或者屬性都有明確的說明。提供綜合指導與其他方面的指導。

擴充庫:yii提供由使用者撰寫的組件構成的擴充庫。

?

項目首頁是: www.yiiframework.com/

?

?

?

其實安裝yii就和安裝ZendFramework沒什麼區別,要麼在每個項目中包含yii,要麼在伺服器用php的include_path來包含。

?

解壓縮下載下來的檔案夾後,裡面有三個子檔案夾:demos(示範),framework(架構核心代碼),requirements(這個裡邊兒是檢測你的伺服器配置是否支援yii架構,主要是php擴充方面)

?

接下來就先進行測試吧,把裡面的requirements目錄單獨複製到你的web目錄下,然後運行 xxx.xxx.com/requirements,這樣會顯示類似如所示,

?

image

php_yii_requirements_1

?

PDO MySQL擴充模組 未通過 所有和資料庫相關的類 如果使用MySQL資料庫,這是必須的。

PDO PostgreSQL擴充模組 未通過 所有和資料庫相關的類 如果使用PostgreSQL資料庫,這是必須的。

APC擴充模組 未通過 CApcCache

SOAP擴充模組 未通過 CWebService, CWebServiceAction

?

我的伺服器目前有著四項沒有通過,出去PDO PostgreSQL這項我不需要,打算把其他三項給加上。

?

PDO MySQL的擴充需要在編譯php的時候增加 --with-pdo-mysql=/usr/local/mysql

SOAP需要增加 --enable-soap 和 --with-libxml-dir=/usr/local/libxml2

?

然後進行編譯安裝

?[Copy to clipboard]View Code BASH

?

1

?

?

?

./configure --prefix=/usr/local/php-5.2.9/ --enable-force-cgi-redirect --enable-mbstring=all --enable-mbregex --enable-mbstr-enc-trans --enable-versioning --enable-trans-sid --enable-ftp --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache2/bin/apxs --with-soap=yes --with-curl=/usr/local/curl/ --with-zlib-dir=/usr/local/zlib/ --with-mcrypt=/usr/local/libmcrypt/ --with-gd=/usr/local/gd2 --with-jpeg-dir=/usr --with-freetype-dir=/usr/local/freetype --with-ttf --with-png-dir=/usr --with-mhash=/usr/local/mhash/ --with-dom=/usr/local/libxml2 --with-iconv=/usr/local/libiconv --with-openssl=/usr/local/openssl --with-pdo-mysql=/usr/local/mysql --enable-soap --with-libxml-dir=/usr/local/libxml2 && make && make install

?

由於之前進行過memcached的安裝,所以這裡再重新來一遍

?[Copy to clipboard]View Code BASH

?

1

2

3

4

?

?

?

/usr/local/php/bin/phpize

./configure --prefix=/usr/local/memcached_phpclient3.0.4 --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir=/usr/local/zlib/

make

make install

?

安裝完成後顯示:

Installing shared extensions: /usr/local/php-5.2.9//lib/php/extensions/no-debug-non-zts-20060613/

?

下來修改php.ini

首先找到extension_dir,預設的應該是:extension_dir = "./"

現在修改成:extension_dir = "/usr/local/php//lib/php//extensions/no-debug-non-zts-20060613/"

然後再找到Dynamic Extensions,在下面加上:

extension=memcache.so

?

APC擴充模組兒比較麻煩:

它的下載地址是:http://pecl.php.net/package/apc

可以從下面的列表兒選擇你需要的來下載。我下載的是3.0.19 stable版本。

解壓縮後進入目錄,並執行如下命令:

?[Copy to clipboard]View Code BASH

?

1

2

3

4

?

?

?

/usr/local/php/bin/phpize

./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/local/php/bin/php-config

make

make install

?

然後再次修改php.ini檔案,

加入:

extension=apc.so

apc.enabled = 1

apc.cache_by_default = on

apc.shm_segments = 1

apc.shm_size = 32

apc.ttl = 600

apc.user_ttl = 600

apc.num_files_hint = 0

apc.write_lock = On

?

apc配置的一些說明:

apc.cache_by_default = On

是否預設對所有檔案啟用緩衝。 若設為Off並與以加號開頭的apc.filters指令一起用,則檔案僅在匹配過濾器時才被緩衝

?

apc.enabled = On

是否啟用APC,如果APC被靜態編譯進PHP又想禁用它,這是唯一的辦法。

?

pc.filters =

一個以逗號分隔的POSIX擴充Regex列表。

如果源檔案名稱與任意一個模式比對,則該檔案不被緩衝。

注意,用來匹配的檔案名稱是傳遞給include/require的檔案名稱,而不是絕對路徑。

如果Regex的第一個字元是"+"則意味著任何匹配運算式的檔案會被緩衝,如果第一個字元是"-"則任何匹配項都不會被緩衝。"-"是預設值,可以省略掉。

?

apc.ttl = 0

緩衝條目在緩衝區中允許逗留的秒數。0 表示永不逾時。建議值為7200~36000。設為 0 意味著緩衝區有可能被舊的緩衝條目填滿,從而導致無法緩衝新條目。

?

apc.user_ttl = 0

類似於apc.ttl,只是針對每個使用者而言,建議值為7200~36000。

?

apc.gc_ttl = 3600

緩衝條目在記憶體回收表中能夠存在的秒數

此值提供了一個安全措施,即使一個伺服器處理序在執行緩衝的源檔案時崩潰, 中.國.站長站

而且該源檔案已經被修改,為舊版本分配的記憶體也不會被回收,直到達到此TTL值為止。設為零將禁用此特性。

?

pc.max_file_size = 1M

禁止大於此尺寸的檔案被緩衝。

?

apc.num_files_hint = 1000

Web伺服器上可能被包含或被請求的不同源檔案的大致數量(建議值為1024~4096)。

如果你不能確定,則設為 0 ;此設定主要用於擁有數千個源檔案的網站。

?

apc.shm_segments = 1

為編譯器緩衝區分配的共用記憶體塊數量(建議值為1)。

如果APC耗盡了共用記憶體,並且已將apc.shm_size指令設為系統允許的最大值,你可以嘗試增大此值。

?

apc.shm_size = 30

每個共用記憶體塊的大小(以MB為單位,建議值為128~256)。

有些系統(包括大多數BSD變種)預設的共用記憶體塊大小非常少。

?

apc.write_lock = On

是否啟用寫入鎖。

?

重啟apache伺服器

然後在phpinfo中你就會看到apc的設定了。

?

至此,需要的yii的擴充已經配置完畢了,再重新整理一下兒剛才的測試網頁,就變成了:

?

image

php_yii_requirements_2

?

--------------------------------------------

好了,環境測試通過了,下面接著來測試demo吧。

?

把yii的demos目錄和framework目錄copy到你的web目錄下,並且訪問: xxx.xxx.com/demos/helloworld

?

在我這裡會顯示:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 137963997 bytes) in Unknown on line 0

不知道為什麼,但是後來我在php.ini中將上面的apc設定都給注釋掉,再重啟apache2 就沒問題了,會正確的顯示出:

Hello World

那就先不用apc擴充吧。

?

現將你的yii的framework目錄放到合適的位置,然後修改你的php.ini的include_path,重啟apache server

這個時候修改你的helloworld/index.php

?[Copy to clipboard]View Code PHP

?

1

2

3

?

?

[php] view plaincopy

?

? ? require_once(dirname(__FILE__).'/../../framework/yii.php'); ?

? ? #修改成: ?

? ? require_once('yii.php'); ?

?

這個時候兒如果還是可以正確的顯示出:Hello World

則代表你配置成功了。

?

好了,配置好了,如何初步的運用yii來寫程式。

請看這裡:

英文的: www.yiiframework.com/doc/guide/

中文的: www.yiiframework.com/doc/guide/zh_cn/index

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.