CodeIgniter 入门
in php on CodeIgniter
网上想要比较cakephp和CodeIgniter,答案是萝卜白菜各有所爱。
cakephp模仿ROR,没用过ROR的学习曲线要大些。
CodeIgniter适合小型项目,性能比较好,因为没有过多累赘。
cakephp中型项目,性能稍逊。但是特性较CodeIgniter多。
CodeIgniter文档较详细:
下载包中user_guide文件夹/index.html有,但是那个tablecontent一开始没注意到,它在页面顶部,点击出来下拉目录,囧。
照着文档读一遍,两个小时就够了,简单吧。
笔记:
以其index.php来作为你项目入口,
apache配置中需要配置文件夹
Options execCGI FollowSymLinks
AllowOverride All
-
静态页面控制:
默认连接方式是http://example.com/[controller-class]/[controller-method]/[arguments]
那么 http://example.com/news/latest/10 就会找到news这个控制器类调用其latest方法,传入10这个参数。
这个配置是在application/config/routes.php中
注意,例如这样的配置
routes[‘welcome’] = ‘welcome’
将会在controller中寻找welcome 文件夹中(或下面的controller子文件夹)的welcome.php文件中的Welcome类。文件名必须小写,类名必须以大写字母开头。
URL Helper类问题:
这里面的方法都是依据config.php中配置的$config['base_url']来的,
因此如果你配置的是abc.com,那么即使用户使用www.abc.com访问,返回的都是不带www的url,包括
current_url()这个方法也是如此,显然这个方法是个鸡肋,遇到ajax请求就跨域了,因为www.abc.com和abc.com是跨子域的。
异常处理:
他的异常在index.php中设置,不知道是什么原因,在其他地方再设置就没什么作用了,一旦出错就显示一堆错误,只能使用ob_end_clean();把它的输出清除掉。
日志:
system\libraries\Log.php log_message('level', 'message')
日志显示级别在config.php中配置
$config['log_threshold'] = 4;
$config['log_path'] = ''; //空表示在站点目录下logs文件夹中,以php为扩展名
CI有个session过期的bug,因为它是每隔一段时间更新session对应的cookie(这是为了安全起见),所以可能造成前后两个ajax请求的session对应的cookie不一样:
1:请求A调用时正好导致更新cookie
2:请求B此时还是使用老cookie,由于A请求改了cookie,则会导致找不到session。
参见:http://codeigniter.com/forums/viewthread/102456/
这上面也没好的办法,要么是注释更新cookie的代码,要么将$config['sess_time_to_update'] = 300;设置为很长就不会调用更新cookie的方法。
参见http://www.path8.net/tn/archives/2526
CI可通过数据库保存session,但是无论怎样,都是依赖客户端的cookie配合的,所以定时更新cookie的方法让session长期不过期的目标不好实现。
下面是自定义的Session类,CI可以自定义核心类:
user_guide/general/core_classes.html
放在application/core/即可,会自动加载的,要以MY_开头,要继承想要扩展的父类。
下面是MY_Session类:
Continue reading CodeIgniter 入门 对于开发者不很友好,虽然目前是注册就送30$,但是注册号码的话需要付费却不能从这里面扣。 可以通过verify number将你的美国号码绑定,这样打出去的号码将会使用你绑定的号码。 对于开发者来讲,还是后起之秀tropo好用。 rest api见http://www.twilio.com/docs/api/rest/ 同样它也需要http 基本验证,用户名是账户sid(不是app sid),密码是token。 http://readthedocs.org/docs/twilio-php/en/latest/index.html 它也有类似phono的客户端https://www.twilio.com/docs/client 不只是因为我测试时就是生产环境的缘故,感觉sms上twilio还是要比tropo快很多。我测试tropo都是它免费的开发环境,感觉sms比较慢。 client部分: 用它提供的脚本地址,因为它的脚本里还具有自动更新client js脚本库版本的功能,需要解析src中的域名部分来获得新js的地址。 这个需要服务端配合,首先setup需要app sid和token,这个token是要依据权限创建的,直接使用它的php-helper来创建就比较简单。Twilio/Capability.php 其次对于需要接听电话的情况,客户端需要初始化一个agent id,这个是可以随便取的,但是与电话号码绑定的入口必须要知道这个agentid才能将会话转接到这个client。 https://www.twilio.com/docs/client/device 流程: client 的connect会请求app的call, url 此时请求参数中caller会是client:agentid的形式。 此时如果想转接到真实电话,必须要制定dial节点的callid属性。 如果是直接打电话这个app的号码,也会请求app的call url 上面两个的direction参数都是inbound 如果是rest api方式发起outbound会话,被呼叫方接通电话后,也会请求app的call url,这时direction参数是outbound-api 好笑的是如果client发起的请求被转接到client本身时,这也是可以的,那就变成了自己和自己对话了。 下面是对于twilio和tropo使用的对比 http://pardner.com/2011/04/tropo-not-ready-for-prime-time-went-with-twilio/ 作者最终选择的是twilio: 主要是tropo无声的丢失了信息而twilio却保证了不丢失。 REST API中查询所有买入的号码是 https://www.twilio.com/docs/api/rest/incoming-phone-numbers Continue reading twilio杂记 之前使用navicat lite,感觉并不好操作,能使用mysql workbentch就用mysql workbentch,mysql workbentch要装.net,有的机器还装不好,而且在win7上ui不很好用。 但是现在才发现开源免费的heidisql操作很方便,速度很快。 介绍一下它的提示功能, 在sql编辑器中,打点号,就会出现自动提示了,表名,数据库名等等。 so good. 赶快试试吧. Continue reading heidisql mysql工具介绍 将列表放在update 之后即可。 Continue reading mysql update from java请求https常常遇到证书问题,对于许多免费的自签名证书,需要手动导入到jdk keystore中去。见http://kazge.com/archives/400.html。 今天却遇到GEOTrust认证的证书也需要导入的问题。 浏览器里面看这个证书是由GEOTrust认证的,浏览器没什么问题,使用java请求就抛异常。 我们知道jdk是自带GEOTrust根证书的,照理说这个认证的证书就不需要导入了。网上搜了一下,大概的原因是:这个证书域名以*开头,jdk不能handle http://jasig.275507.n4.nabble.com/SSL-Error-td1749567.html 是不是这个原因,我没细看。 还是将证书导入到keystore保险。 导入后要重启运行在此jdk上的程序才能起效。 php的毫秒是没有默认函数的,它自带的是microtime,即微秒: 1 second = 1000 milli second = 1000,000 micro second = 1000,000,000 nano second 网上抄来抄去都是microtime自带的例子,返回的还是秒。 microtime() 返回 0.1111 131231秒,空白前部分是float形式的秒数 空白部分是秒的整数部分 故要得到毫秒: ok, 看清楚了,不是那些拷来拷去的秒函数哦。 Continue reading php之毫秒 发短信: 有的号码是发不到中啊国的,找了半天原因才发现要换个大城市的号码较好。如芝加哥。 Continue reading tropo杂记 官网:http://logging.apache.org/log4php/ ,下载src包,php不存在bin包 以2.1为例,查看install文件,安装示例: 将src/main/php中文件放在目标位置即可。 使用: Continue reading log4php使用 拿别人做的圆角模板,在非IE下好好地,到IE下就是变了形。原因是td中那个高度老是莫名其妙的有19px。 后来看到这篇文章: http://dancewithnet.com/2007/07/26/ie6-height-bug/ 在IE6中设置display:block的空容器一个较小高度时,如<p style="height:1px;"></p>,会发现其高度不能小于某个值,比如在字体大小为12px时这个值是15px,在浏览器默认字体大小时这个值为19px,你可以通过调整IE6中的“查看>字体大小”来观看这个高度的变化。解决方案: 照此,我将样式设置为overflow:hidden 将td中的img改为td背景图片,//使用img就会撑大 在td中增加 增加样式line-height:0 这才解决问题。 Continue reading ie圆角,19px,挥之不去的最小高度 in 计算机基础 1 kB = 1024 B (kB - kilobajt) 千 1 MB = 1024 kB (MB - megabajt) 兆 1 GB = 1024 MB (GB - gigabajt) 吉 1 TB = 1024 GB (TB - terabajt) 太 1 PB = 1024 TB (PB - petabajt) 拍 1 EB = 1024 PB (EB - eksabajt) 艾 1 ZB = 1024 EB (ZB - zettabajt) 皆 1 YB = 1024 ZB (YB - jottabajt) 佑 1 BB = 1024 JB (BB - brontobajt) Continue reading bit单位大小 twilio杂记
heidisql mysql工具介绍
mysql update from
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 纠结的java ssl请求
php之毫秒
<?php
function getmilliseconds() {
list ($usec, $sec) = explode(" ", microtime());
return (int)(((float) $usec + (float) $sec) * 1000);
}
?>
tropo杂记
log4php使用
ie圆角,19px,挥之不去的最小高度
bit单位大小
Pagination