1.我有一次整理my.cnf文件,看到log,data目录全设定在/var/lib/mysql下,于是顺便把/var/lib/mysql/下了。后来看php手册,看到unix系统下的连接方式,有tcp,unix(socket)等几种。后来注意到/var/lib/mysql/mysql.sock文件一般大小就是零,想到:是不是这个是用来做网络连接用的呢?
我服务器端监视这个文件,客户端往这个文件里写入内容,服务器就可以读这个内容了吗,服务器端和客户端就通过这个”文件”建立了连接了吗?这样通过内存不是比走网卡要快吗….咳,等等…说什么呢?走内存比网卡要快?是的,我说了走内存.我自己心里认定要比网络快,可以走管道,我就认为管道这个肯定是直接走内存了….所以socket文件就应该是要走内存…
看出问题了吗?千万不要把mysql.sock设到/var/目录下。默认情况下,是放在/tmp/mysql.sock这个地方。因为,/tmp其实不是一个通常意义的文件夹,而是内存中给用户划的一块。所以很多程序都很喜欢往内存里写东西,就是往/tmp/里写和东西。
(不过对于unix/linux系统我懂得不是太多,只是我自己想的。但是自己觉得结果是正确的.)
2.我前一阵面试了不少人,基本都要问一个问题:知道session的机制吗?没想到居然是哪怕开价税后5000的我们看好的,也答得让我不满意。这促使我自己也重新反思了一下session这个问题。最初我装的mediawiki的session的存放位置是没改的,我自个儿好事,改到网站文件根目录的session目录下去了。后来一想,其实是有问题的。这个,应该要改回去。我很早计划做一个开源cms框架,搞了部分,计划中就有这样一个功能:页面加载是需要时间的,程序可以在初次启动时把自身目录复制到内存中,以后就可以直接从内存中加载了。这个在网站负载大的时候,是有必要的。
3.这个其实是手册上有的。为什么php一直保留mysql_connect和mysql_pconnect两个函数呢。因为在不同的负载压力下选用不同的函数,会大大提高网站运行速度。本来我以为大家都知道,但最近的面试让我吃惊。
4.其实多几次for函数,多几个语句,并不特别影响性能。有时候对这个做优化,就是白费工夫。