长短连接区别
不同于mysql_connect的短连接,mysql_pconnect持久连接的时候,将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。
当执行完毕后,到 mysql 服务器的持久连接不会被关闭,此连接将保持打开以备以后使用,即mysql_close() 不会关闭由 mysql_pconnect() 建立的连接。
Apache与长连接管理
PHP本身并没有数据库连接池的概念,但是Apache有进程池的概念, 一个Apache子进程结束后会被放回进程池, 这也就使得用mysql_pconnect打开的的那个mysql连接资源可以不被释放,而是依附在相应的Apache子进程上保存到了进程池中。于是在下一个连接请求时它就可以被复用。但是在Apache并发访问量大的时候,如果使用mysql_pconnect,会由于之前的Apache子进程占用的MySQL连接没有close, 很快使MySQL达到最大连接数,使得之后的请求可能得不到响应。
当然,高并发情况下也不能怪罪pconnect,用短连接频繁连接mysql,也一样有问题。在没有连接池的情况下,用apache做连接池管理是比较好的选择。
不同于mysql_connect的短连接,mysql_pconnect持久连接的时候,将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。
当执行完毕后,到 mysql 服务器的持久连接不会被关闭,此连接将保持打开以备以后使用,即mysql_close() 不会关闭由 mysql_pconnect() 建立的连接。
Apache与长连接管理
PHP本身并没有数据库连接池的概念,但是Apache有进程池的概念, 一个Apache子进程结束后会被放回进程池, 这也就使得用mysql_pconnect打开的的那个mysql连接资源可以不被释放,而是依附在相应的Apache子进程上保存到了进程池中。于是在下一个连接请求时它就可以被复用。但是在Apache并发访问量大的时候,如果使用mysql_pconnect,会由于之前的Apache子进程占用的MySQL连接没有close, 很快使MySQL达到最大连接数,使得之后的请求可能得不到响应。
当然,高并发情况下也不能怪罪pconnect,用短连接频繁连接mysql,也一样有问题。在没有连接池的情况下,用apache做连接池管理是比较好的选择。
FreeBSD更改csh为bash产生错误的解决办法
2011/12/30 14:10 ArthurXF
操作系统:freebsd 8.0-RELEASE
接触freebsd一天,感觉很不习惯 想把shell改为熟悉的bash
步骤
#cd /usr/ports/shells/bash
# make install clean ##这条命令忘记执行了 结果直接执行了下面的命令
#chsh -s /usr/local/bin/bash
于是杯具出现了 重新登录错误
su:/usr/local/bin/bash: no such file or directory
可见粗心大意 害人不浅
解决办法:
重启进入单用户模式 #启动时选择4
因为硬重启 所以开始先检测磁盘
#fsck
#mount -a
#chpass -s /bin/csh
重启正常登录 执行
# make install clean
#vim /etc/profile
在里面加入下面命令(这里根据自己情况修改 如果PS1变量正常 不需要改动)
PS1="`whoami`@`hostname | sed 's/\..*//'`"
case `id -u` in
0) PS1="${PS1}# ";;
*) PS1="${PS1}$ ";;
esac
注销重新登录即可
接触freebsd一天,感觉很不习惯 想把shell改为熟悉的bash
步骤
#cd /usr/ports/shells/bash
# make install clean ##这条命令忘记执行了 结果直接执行了下面的命令
#chsh -s /usr/local/bin/bash
于是杯具出现了 重新登录错误
su:/usr/local/bin/bash: no such file or directory
可见粗心大意 害人不浅
解决办法:
重启进入单用户模式 #启动时选择4
因为硬重启 所以开始先检测磁盘
#fsck
#mount -a
#chpass -s /bin/csh
重启正常登录 执行
# make install clean
#vim /etc/profile
在里面加入下面命令(这里根据自己情况修改 如果PS1变量正常 不需要改动)
PS1="`whoami`@`hostname | sed 's/\..*//'`"
case `id -u` in
0) PS1="${PS1}# ";;
*) PS1="${PS1}$ ";;
esac
注销重新登录即可