- 单引号'和双引号"的区别
单引号要比双引号执行效率要高,因为双引号会对内容进行预处理。例:'$value'输出字符 $value ;"$value"输出变量$value的值。 - char和varchar的区别
char是定长而varchar是变长,char的主要特点是存储方式预分配,varchar当它的数据长度发生变化时会影响其存储的页分配。
char与varchar是一对矛盾的统一体,两者是互补的关系.
varchar比char节省空间,在效率上比 char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的 以空间换效率。
varchar 虽然比 char 节省空间,但是如果一个 varchar 列经常被修改,而且每次被修改的数据的长度不同,这会引起行迁移(row migration)现象,而这造成多余的i/o,是数据库设计和调整中要尽力避免的,在这种情况下用 char代替varchar2会更好一些。 - mysql_connect 和 mysql_pconnect 的区别
引用exceed php club论坛上的朋友原话:
php中 mysql_pconnect() 的实现方式: 其实 mysql_pconnect() 本身并没有做太多的处理, 它唯一做的只是在 php 运行结束后不主动 close 掉mysql的连接.
mysql_pconnect() 与 mysql_connect() 的区别:
cgi 方式下:
在php经 cgi 方式运行时 pconnect 和 connect 是基本没有区别的, 因为 cgi 方式是每一个php访问起一个进程, 访问结束后进程也就结束了, 资源也全释放了.
apache模块方式下:
区别在于当 php 以 apache 模块方式运行时, 由于 apache 有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用.这就使得在apache并发访问量不大的时候, 由于使用了pconnect, php节省了反复连接 db 的时间, 使得访问速度加快. 这应该是比较好理解的. 但是在apache并发访问量大的时候, 如果使用pconnect, 会由于之前的一些httpd进程占用的mysql连接没有 close, 则可能会因为mysql已经达到最大连接着, 使得之后的一些请求永远得不到满足.
例如:
若 mysql 最大连接数设为 500, 而 apache 的最大同时访问数设为2000,假设所有访问都会要求访问 db, 而且操作时间会比较长
当前500个请求的httpd都没有结束的时候, 之后的httd进程都是无法连接到mysql的(因已经达到mysql最大连接数). 只有当前500个httpd进程结束或被复用才可以连接得到了mysql.
其实这个也很好解释了xgy_p的测试中若操作比较简单, pconnect比connect效率高很多, 而且跟使用jsp的连接池的速度比较接近. 因为这个时候httpd进程可以不断的给复用.
而当db操作复杂, 耗时较长时, 因httpd会fork很多并发进程处理, 而先产生的httpd进程不释放db连接, 使得后产生的httpd进程无法连上db. 因为这样没有复用其它httpd进程的mysql连接. 于是会就产生很多连接超时, 像一开始的1000个并发连接测试说几乎都是连接超时就是这个原因.
(反过来看jsp用的如果是纯粹的db连接池, 则不会有因为达到mysql连接上限而连不上的问题, 因为jsp的连接池会使得可以等待其它连接使用完毕并复用. )
因此在并发访问量不高时,使用pconnect可以简单提高访问速度, 但在并发量增大后, 是否再使用pconnect就要看程序员的选择了..
就我个人认为, php现在对mysql的连接并没有真正用到连接池, pconnect也只是相当于借了apache的进程池来用, 所以在并发访问量大的时候pconnect并不能很好的提高访问db效率. 在这一点上. php的确比不上jsp.
就目前的这种情况, 如果并发量大的话, 我个人建议最好还用mysql_connect. - isset()和empty()的区别
两者都是测试变量用的,但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空。
如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示,如果一个变量被赋空值,$foo=""或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。
要注销一个变量,可以用unset($foo)或者$foo = null
2007年11月30日星期五
PHP 基础知识
FROM:
没有评论:
发表评论