chicagoboss加mysql小记(2)

by kevin 4. 十二月 2012 00:12 >
  1. chicagoboss默认的使用poolboy实现mysql连接池,但是连接池的最大连接数只有10,这个可以需要通过修改源代码boss_db_sup.erl(line:19)中的max_overflow。
  2. 使用连接池连接mysql,如果服务器设置了tcp_keepalive_time,那么如果一段时间后,如果了某个连接没有数据交互,相应的socket端口会被关闭,更糟糕的是无论是mysql的服务端,还是应用客户端,都不知道该socket已经关闭,下次请求是会提示"socket is closed",而且无法重新打开。解决的办法是修改mysql_recv.erl(line:98),添加tcp连接选项{keepalive, true},显式要求连接不断开。
  3. chicagoboss支持在每个action执行之前,执行before_{action},执行之后,执行after_{action}。before_{action}还是比较好用的,after_{action}就很鸡肋了,因为你能处理的只有html,而不是一个action result,所以这个需要自己修改boss_web_controller.erl去扩展。
  4. mysql中的date类型,无法被chicagoboss转换成有效的数据类型,使用datetime类型或者可以尝试修改boss_record_lib.erl的convert_value_to_type方法。
  5. chicagoboss使用Django模板引擎,所以无法调用带参数的服务端方法。但也有个好处,支持模板继承。
  6. boss_rebar.erl存在bug,boss.config中配置vm_name,如果是dev启动vm_name,则添加为启动参数-name,如果是正常启动,则为-sname。可以修改start_cmd方法和stop_cmd方法解决。
  7. 利用view生成html。  创建一个view,会生成一个{project}_view_{folder}_{filename}_html.beam文件 调用{project}_view_{folder}_{filename}_html:render(Vars)方法,返回{ok,[Binary]} 其中Vars=[{key, Value}], Binary=<<Html>>,需要生成html的时候可以这样使用。
  8. mochiweb中的处理进程数,可以在mochiweb_socket_server.erl中修改参数acceptor_pool_size,默认为16。
分享到: 更多

打赏请我喝果汁咯

支付宝 微信

关于我

80后,单身,平庸的程序员。

喜欢看书,乐于交友,向往旅游。

遇建Kevin

FluentData交流群:477926269

Fluentdata