phalcon遇到的那些坑


1.數據重復插入

數據被重復插入,一般是在index/index方法中進行數據庫insert操作,會發現一條數據被重復插了一次。

原因:瀏覽器有時候會自動請求 /favicon.ico ,而你的網站並沒有這個文件,恰好默認路由又無法匹配這種帶有"點"的路徑,所以呢,就被當作無匹配的路徑了,這時候就會進入defaultController/defaultAction了,相當於多請求了index/index,從而造成插入兩次數據。

解決:為路由服務添加 notFound 配置,例如:$router->notFound(array('controller'=>'httperr','action'=>'err404'));其中httperr和err404是自己創建的控制器和方法。這樣當路由匹配不到路徑的時候,就會進入這個控制器,而不會進入默認控制器了,問題得以解決。

<!-- lang: php -->
$router->add('/',array(
  "controller"=>'index',
  "action"=>'index'
));
$router->notFound(array('controller'=>'httperr','action'=>'err404'));
2.大小寫問題

目前可以確定的是 url中控制器大小寫不敏感,框架會自動轉為駝峰式再去找類,需要注意的是dispacther::getControllerName()是和url中一致的,不會轉換成標准模式。 視圖目錄名,應該是統一小寫。 自定義路由規則的時候模塊名匹配是區分大小寫的,請注意。

3.字段元數據緩存

默認框架會在第一次查詢該表時,會查詢表結構信息,然后緩存在內存中,在本次請求中再次查詢該表就不用再通過sql查詢表結構了。但是在復雜邏輯下,由於使用到多個模型,其表結構查詢所帶來的時間消耗占了總查詢時間的10%~%50左右,所以有必要做一個落地緩存,將表結構信息緩存到文件或者memcache、redis中,只是要記得,在修改過表結構后,要清空相關緩存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM