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中,只是要记得,在修改过表结构后,要清空相关缓存。
phalcon遇到的那些坑的更多相关文章
- Windows下PhpStorm结合WAMP开发Phalcon应用的配置
最近要利用Phalcon框架开发PHP应用,因为以前基本没接触过PHP更没用过PHP框架,结果整环境整IDE配置什么的花了好长时间 学习慕课网上的PHP入门教程安装了WAMP(windows+apac ...
- phalcon3.0.1默认多模块生成的几个bug
发现用Phalcon DevTools (3.0.0)生成的多模块有一些bug: 默认的路由定义,字符串替换有误 原代码// $namespace = str_replace('Module','Co ...
- phalcon安装-遇坑php-config is not installed 解决方法
通过源码编译安装php环境,按照phalcon官方文档安装扩展,会遇到php-config is not installed的坑. 尝试通过下列命令可以解决: cd /opt/cphalcon-/bu ...
- Phalcon如何切换数据库《Phalcon入坑指南系列 三》
本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能(项目配置.控制器.模型.增.删.改.查) 三.Phalcon ...
- Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》
本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能<Phalcon入坑指南系列 二> 三.Phalc ...
- Phalcon多模块如何实现连接不同数据库 《Phalcon入坑指南系列 五》
本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能<Phalcon入坑指南系列 二> 三.Phalc ...
- 【干货】YUM安装PHP 7版本后,增加phalcon框架的报错解决
目录 1.yum安装php 7.x版本,此处部署7.3版本 2.安装phalcon框架 2.1.PHP版本依赖关系 2.2.编译phalcon扩展模块 2.3.增加扩展文件 3.部署phalcon遇到 ...
- centos7系统nginx下phalcon环境搭建
之前我们采用的是Apache服务器,可是每秒响应只能达到2000,听说nginx可以轻易破万, 于是换成nginx试试. phalcon的官网有nginx重写规则的示例,可是却与apache的不一致, ...
- 一个神奇的PHP框架:Phalcon 之初识
前言 公司的APP响应速度比较慢,公司大神决定使用C语言编写的PHP框架Phalcon 代替原来的框架,响应速度有比较大的提升.以前只是听说过,没有深入的了解过.即然工作中有用到,便花点时间了解了下, ...
随机推荐
- window.postMessage实现网页间通信
window.postMessage() 方法可以安全地实现跨域通信.通常,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https),端口号(443为https的默认值),以 ...
- 为Github 托管项目的访问添加SSH keys
为了便于访问远程仓库,各个协作者将自己的本地的项目内容推送到远程仓库中,使用 SSH keys 验证github的好处:不用每次提交代码时都输入用户名和密码. 如果SSH key没有添加到github ...
- 手机网络抓包 转载记录http://blog.csdn.net/skylin19840101/article/details/43485911
Fiddler不但能截获各种浏览器发出的HTTP请求, 也可以截获各种智能手机发出的HTTP/HTTPS请求.Fiddler能捕获IOS设备发出的请求,比如IPhone, IPad, MacBook. ...
- Ubuntu 10.04 安装流程
ubuntu 10.04 安装流程 需安装libxrender-dev才能跑html5 来自为知笔记(Wiz)
- android 搜索自动匹配关键字并且标红
这个效果主要是为了着重表现搜索关键字的 . 1. 单关键字匹配 若只需匹配 搜索 ...
- debian更新源时找不到公钥的解决办法
W: GPG error: http://mirrors.163.com jessie-updates InRelease: The following signatures couldn't be ...
- python 下载.whl 文件,查看已安装软件包方法
下载地址 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 另一个Python packages地址为 https://pypi.org/ 下载 ...
- mysql update常见实例
在MySQL中使用update语句的时候,Where条件或者值都可以使用子查询,比如: ) ); 但是如果子查询和更新的表是同一个表的话,MySQL会报如下的错误:中涉及到的子查询要格外注意 Erro ...
- 定时登录下载sftp服务器上的某些有规则的文件
[root@1-live duizhangdan]# cat wget.sh #!/bin/bash#定时下载sina sftp服务器上的bak_dir=`date -d"5 day ago ...
- 进程间通信(java)--队列
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便 ...