Submitted by gouki on 2012, September 23, 10:06 PM
tmp目录就是用来存放临时文件的。能引发什么血案?
嗯。当文件过多的时候,啥玩意都写不进,比如 session文件写不进,比如。。。vim打开文件的时候,会创建临时文件,然后也写不进。。问题多多了。
最后,甚至连rm /tmp/*都无法执行:
-bash: /bin/rm: Argument list too long
我晶啊,这样也行??
我想看看是不是session的问题,于是:
root@li408-193:/tmp# ls -l sess_*
-bash: /bin/ls: Argument list too long
我受不了了。。。
最后只能到根目录下面,先rm -rf /tmp/,请注意看最后一个斜杠
root@li408-193:/# rm -rf /tmp/
rm: cannot remove `/tmp': Directory not empty
我晶,这是肿么了。
最后只能rm -rf /tmp
然后mkdir tmp,chmod -R 0777 /tmp
整个世界清静了。。。
Tags: tmp
PHP | 评论:0
| 阅读:14421
Submitted by gouki on 2012, September 14, 1:46 PM
这是一段时间的我的经历和笔记,看过之前的博客的人应该会看到,我在用mongo,是的,我将大量的数据用mongo存储了,但最终我还是放弃了。理由有很多,不过我还是慢慢列出来吧
1、为什么用mongo
因为当初设计数据库的时候仓促,本来认为只有2~30万的数据,但最终却发现会有200多万条,以后可能还会更加多,所以当初很多大字段都扔在了一个表里,导致如果用in查询,非常慢。所以我想用mongo,扔到内存里查询,看看效果是否会很好。
2、为什么又放弃使用mongo了
说实话,mongo在做关系查询的方面确实挺不错,但存在的问题是我的数据都是用php往mongo里导入,而mongo对于数字和字符串还是认得比较严 的。当然这都不是问题。。问题是现在没有专门的DBA,以后对数据不太容易,也不太方便管理。毕竟目前公司的整体项目,大部分都是用mysql在做处理, 所以,为了配合更多人,才放弃使用mongo(当然,也是为了节约内存)
3、mongo在使用时的优缺点
其实mongo在仅做处理这些条件查询的时候,并没有想象中的那样。当然确实很快,不过在第一次查询的时候还是有点慢的,然后在数据没有变化的时候查询数 据都在0.00x秒,不过,我真的没有太在意(其实有点在意,但因为那个条件也是用mysql生成出来的,再加上查询之前对于那些字段都得做一次强制转 换,否则对于查询的时候可能就出不来数据)
4、最终我怎么做了
既然我已经知道我原来的数据表的问题在哪里,我就想办法处理掉不就完了?于是写了一个脚本,自己将主表的数据中的几个重要的,用来查询和排序的字段拎出来,重建一个表,用来查询,将可变字段改成定长字段,为了提速。这样一来,速度比原来最少快了两个等级。
5、下一步我会怎么做
其实现在做很多事情都是偷懒了,比如对于字段是int型的时候,却还是用的where id = '1',而不是where id = 1;
所以这是后期考虑优化的地方。
当然因为将主要字段分拆成表,所以带来的另一个问题是,当更改原表的时候,需要对新表做更新处理。
6、最后说一下
原表的索引,原来达到了300多M,后来因为把数据迁到新表(做冗余),在新的表建的索引,只有70多M,而且原表因为将索引清除了,编辑和插入的数据又上了一个等级,最终还是觉得这样有优势 。
---PS
不一定要学我,我这也是自己的经历,没有什么可比和可参照性。当然你要骂我那是可以的
Tags: mongo
PHP | 评论:0
| 阅读:14571
Submitted by gouki on 2012, September 14, 1:44 PM
转这篇文章之前,先介绍一下"SEGMENTFAULT(http://segmentfault.com/)",或许国内已经有很多人知道这个网站了,但毕竟它还是一个新站,看趋势是想做成stackflow之类的国内站,他这么说自己的网站:
XML/HTML代码
- 在 Google 搜索技术问题时突然发现从某段时间开始,所有的问题都被指 向 StackOverflow 这个网站了。而且这个网站的问题和答案质量都很高。但是有一点我很烦恼,没有中文,虽然对技术人员来说看懂英文是最基本 的,但是如果能有一个类似的中文问答社区,对于技术的交流是非常有益的。
-
- 因此,我们借鉴了 StackOverflow 的评分机制,搭建了这个网站。最初的想法很简单:我们在搜索技术问题时,能有中文的优质答案出现在搜索结果里。
上原文吧:
问:HTML 格式的邮件如何定义 CSS
内容:
按照写网页的习惯,的把 css 写在 header 里,样式在 Outlook 和 Mail 客户端都能够正常显示。但是,发现在 Gmail 的 Web 界面上,移除了 body 及其外部的所有代码。
Email HTML 如下:
XML/HTML代码
- <!doctype html>
- <head>
- <meta charset="UTF-8" />
- <style type="text/css">
- .title { color: red }
- </style>
- </head>
- <body>
- <h2 class="title">Email title here</h2>
- </body>
- </html>
邮件发出后,在 Gmail 里看到的邮件内容代码只剩下了:
XML/HTML代码
- <h2 class="title">Email title here</h2>
如果想在 Gmail 里正确的显示样式,目前只发现下面的方式才显示正常:
XML/HTML代码
- <h2 style="color: red">Email title here</h2>
难道,整封邮件只能这样实现了么,有别的方法吗?
回答:
1、经过google搜索,发现gmail目前支持inline的css方式。
看来只能悲剧的inline了。
2、国外有篇博客讲了怎样写HTML邮件:<HTML Email Coding 101> http://litmus.com/blog/html-email-cod...
不仅仅是CSS。我看过,写得很好,图文并茂,你可以看看
Tags: segmentfault, typecho
PHP | 评论:0
| 阅读:17593
Submitted by gouki on 2012, August 29, 1:25 PM
在手册里,关于header函数的说明是说服务端会输出一系列的头,用firebug也可以看得很清楚
一般来说,我们用header控制的情况不是特别多,毕竟不会主动去改什么:一般也就设置设置编码、跳转、压缩等,不太会过多的干涉。下载的时候也会设置头,黑黑
手册上,我们对于cache都是写着如何设置,以便让代码不被cache:
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Pragma: no-cache"); // Date in the past
而且在设置的时候还得注意在header前不能有输出,否则header设置无效,但都没有写过,如何给页面设置Cache,虽然我们知道有一些办法,比如 E-TAG之类的。当然也有简单的设置:
比如我们在输出前,对内容进行md5,将它当成e-tag只要没变化,就不会有影响。也有其他的方式:
$seconds_to_cache = 3600;
$ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
header("Expires: $ts"); header("Pragma: cache");
header("Cache-Control: max-age=$seconds_to_cache");
缓存1小时,主要是过期时间得用gmdate来设置,而不是date,这个要注意,其他都差不多。maxage要和expire能够对得上。
不算笔记的笔记。
Tags: header
PHP | 评论:0
| 阅读:15028
Submitted by gouki on 2012, August 28, 7:36 PM
有时候会用到gzip函数,只是有时候而已。。。
于是。。有些函数就会直接用上了。比如 :gzencode,gzdecode,gzcompress,gzuncompress,gzdeflate,gzinflate
在用的时候。。有些是想当然的。。。比如有Gzencode,就一定会有gzdecode吧?错。。。gzdecode暂时还没有正式版本支持,只存在于svn中,虽然手册上有。。但也说明了不能用
gzcompress与gzdeflate的区别,一个是基于RFC1950协议,一个是基于RFC1951,gzcompress因为是用的1950协议,手册上说了,它需要zlib库。gzdeflate就不需要
所以,gzcompress现在用的相对又少了一点。
好吧,现在说说我的粗心了,大家都知道Gzip压缩是有等级的(压缩软件都有,1~9,1最低压缩,9是最高压缩比),用9的话压缩出来的文件最小,但是解压的时候最耗CPU。所以一般 都是level4,其实就算是1也不错了。
粗心的就在于gzinflate的时候,想当然的将第二个参数length想成level了。结果一直在报错。居然我5分钟后才反应过来。NND,太粗心了。。。
第二个参数是length,不是level啊。
Tags: gzip
PHP | 评论:0
| 阅读:14051