博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
phalcon遇到的那些坑
阅读量:6570 次
发布时间:2019-06-24

本文共 912 字,大约阅读时间需要 3 分钟。

  hot3.png

1.数据重复插入

数据被重复插入,一般是在index/index方法中进行数据库insert操作,会发现一条数据被重复插了一次。

原因:浏览器有时候会自动请求 /favicon.ico ,而你的网站并没有这个文件,恰好默认路由又无法匹配这种带有"点"的路径,所以呢,就被当作无匹配的路径了,这时候就会进入defaultController/defaultAction了,相当于多请求了index/index,从而造成插入两次数据。

解决:为路由服务添加 notFound 配置,例如:$router->notFound(array('controller'=>'httperr','action'=>'err404'));其中httperr和err404是自己创建的控制器和方法。这样当路由匹配不到路径的时候,就会进入这个控制器,而不会进入默认控制器了,问题得以解决。

$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中,只是要记得,在修改过表结构后,要清空相关缓存。

转载于:https://my.oschina.net/cxz001/blog/301433

你可能感兴趣的文章
Python学习第一天
查看>>
mysql中利用游标遍历表中的数据时未正常获取数据
查看>>
Iptables模块recent应用
查看>>
Linux Ext3、Ext4误删文件恢复 extundelete
查看>>
AIX添加硬盘后做rootvg镜像及取消
查看>>
Windows性能计数器
查看>>
NX支持的环境变量(转)
查看>>
基于javascript的Ajax
查看>>
ORACLE中序列问题
查看>>
我的友情链接
查看>>
[实践]Sonar Xcode8兼容
查看>>
数字金额到汉字的转换
查看>>
PostgreSQL 9.4版本的物化视图更新
查看>>
userdel命令
查看>>
linux /etc/inittab 的六个运行级别简单理解
查看>>
Ubuntu Server 14.04 ftp
查看>>
linux系统wc命令详解
查看>>
Windows7 下边查看80端口被哪个服务占用了
查看>>
进度条(HUD) 第三方库
查看>>
CentOS 5.5升级内核到2.6.28并支持XFS/L7
查看>>