yaf官方使用者手冊
先上一張官方執行流程圖,然後來一步步分這個流程。
第一步,啟動應用
yaf專案的入口在**?
一般是專案根目錄下的index.php,是借助於rewrite規則定位到這裡,也可以改寫。
<?php
define
="/conf/***xx.ini");
->bootstrap()->run();
第二步,瀏覽器訪問url,路由解析url
當路由監聽到瀏覽器訪問,就會根據訪問的uri構造出乙個攜帶module,controller,action資訊的request,然後去訪問具體模組下控制器的方法。
預設情況下,我們的路由器是yaf_router, 而預設使用的路由協議是yaf_route_static。
yaf_route_static分析請求中的request_uri, 在去除掉base_uri以後, 獲取到真正的負載路由資訊的request_uri片段, 具體的策略是, 根據」/」對request_uri分段。
那麼可能有兩種情況:
當uri有3段時(/module/controller/action),yaf會認為第一段是模組名,第二段是控制器名,第三段是動作名。
當uri有2段時(/controller/action),yaf會認為是去找預設模組index,第一段被認為是控制器名,第二段是動作名。
注意:預設module是index,它的控制器是固定放在」/controllers」 目錄下的,而其他自定義的module是固定放在」/modules」 目錄下的。另外,上面路由構造request找控制器的規則,也說明了mvc 的url結構訪問的原理。
第三步,分發請求,呼叫控制器方法
路由構造出request後便關閉,接著框架會呼叫分發器的幾個hook方法(dispatchloopstartup,predispatch,postdispatch),那麼一般在postdispatch根據路由構造出來的request,去呼叫具體的控制器方法。
觸發順序
名稱觸發時機說明1
routerstartup
路由之前
觸發最早的乙個事件
2routershutdown
路由結束之後
3routerstartup
路由之前
4predispatch
分發之前
如果勤求處理過程中傳送了forward,則該事件可能觸發多次
5postdispatch
分發之後
動作執行結束,檢視渲染完成,也可能觸發多次
6dispatchloopshutdown
分發迴圈結束
所有業務邏輯已經完成,響應還未傳送
第四步,渲染檢視,響應給瀏覽器
ajax 一次請求
原始是每次切換一次選項都會發起請求,這樣會降低效率,我們可以將請求後的資料儲存下來,然後下次根據請求位址直接獲得請求內容,這樣同url每次只需請求一次。為此專門寫乙個jq外掛程式來做這件事就很有必要。外掛程式具體內容 function if options 回撥 var successfun set...
為何ajax get方式的請求只執行一次?
為何ajax get方式的請求只執行一次?主要是因為ajax存在非同步快取的問題,ie8瀏覽器快取問題導致ajax的get請求只能執行一次,ajax本身自帶有實時非同步請求的功能,而ie快取導致請求時不會請求後台,會直接讀取快取的資料。解決方法 第一種 ajax get請求時,只需將cache設定為...
一次php請求過程
1.搭建環境 1 本機虛擬機器位址192.168.100.142。虛擬機器中啟動nginx容器,php fpm容器,mysql容器,均監聽預設的埠 2 nginx容器配置檔案中通過proxy pass將php請求 到php fpm監聽的9000埠 3 為實驗專案配置網域名稱my.test.com,專...