关于PHP对文件元信息的缓存

2010年6月8日 Elmer 4 条评论

今天在测试 SAE (Sina App Engine) 的Memcache Wrapper 时发现,PHP会在同一个页面的执行过程中对文件的元信息进行缓存。

根据PHP文档对 clearstatcache() 这个方法的说明得知:
在使用 stat(), lstat(), file_exists(), is_writable(), is_readable(), is_executable(), is_file(), is_dir(), is_link(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype(), 或 fileperms() 方法查询文件信息时,PHP会将文件的stat的缓存以提高性能。 clearstatcache()方法可以用来清除这个缓存。另外unlink()会自动清除stat缓存。

例如以下一段程序:

1
2
3
4
5
6
file_put_contents("test.txt", "test_content\n");
var_dump(filesize("test.txt"));
file_put_contents("test.txt", "test_content\n", FILE_APPEND);
var_dump(filesize("test.txt"));
clearstatcache();
var_dump(filesize("test.txt"));

最后会输出

int(13)
int(13)
int(26)

但是通过阅读PHP源码,我发现只有在对本地文件进行unlink, rename和rmdir操作时会清除stat缓存,而在通过其他的wrapper进行unlink, rename和rmdir操作时,并不会清除stat缓存。因此在写wrapper时我们要自己在unlink等方法中通过clearstatcache()来清除stat。

分类: PHP 标签: , , , ,

[转]10 个最酷的 Linux 单行命令

2010年3月22日 Elmer 3 条评论

下面是来自 Commandlinefu 网站由用户投票决出的 10 个最酷的 Linux 单行命令,希望对你有用。

  1. sudo !!
    以 root 帐户执行上一条命令。
  2. python -m SimpleHTTPServer
    利用 Python 搭建一个简单的 Web 服务器,可通过 http://$HOSTNAME:8000 访问。
  3. :w !sudo tee %
    在 Vim 中无需权限保存编辑的文件。
  4. cd -
    更改到上一次访问的目录。
  5. ^foo^bar
    将上一条命令中的 foo 替换为 bar,并执行。
  6. cp filename{,.bak}
    快速备份或复制文件。
  7. mtr google.com
    traceroute + ping。
  8. !whatever:p
    搜索命令历史,但不执行。
  9. $ssh-copy-id user@host
    将 ssh keys 复制到 user@host 以启用无密码 SSH 登录。
  10. ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
    把 Linux 桌面录制为视频。

原文地址:http://linuxtoy.org/archives/top-10-one-liners.html

分类: Linux/Unix 标签: ,

PHP中流程控制的替代语法

2010年1月25日 Elmer 7 条评论

PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。

使用这种语法时需要注意:elseif不可以分开写为else if,否则会编译不通过
阅读全文…

mt_rand与rand

2010年1月21日 Elmer 1 条评论

貌似好久没写日志了

今天在手册中查rand()用法时,无意发现了mt_rand()这个函数。

很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 » Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。

手册真的是个好东西呀,时常查查手册,也能发现不少小技巧,呵呵。

分类: PHP 标签: , ,

送Google Wave邀请了~~~~

2009年12月16日 Elmer 5 条评论

送Google Wave邀请了,想要同学的请在评论里留下Gmail邮箱。

分类: 互联网 标签: ,

Twitter挂了。。。。

2009年12月9日 Elmer 5 条评论

twitter竟然挂了,瀑布汗呀。。。。。。。。twitter-is-over-capacity

分类: 互联网 标签: ,

[转]PHP 中巧用数组降低程序的时间复杂度

2009年12月1日 Elmer 1 条评论

原文地址:PHP 中巧用数组降低程序的时间复杂度.

级别: 初级

王 丹丹, 高级软件工程师, IBM

2009 年 11 月 26 日

本文主要是介绍在 PHP 的编程中,如何巧用数组来降低因多层循环而引起的时间复杂度的问题。特别是当程序需要多次与数据库交互时,用此方法来优化你的代码,将会带给意想不到的效果。

阅读全文…

分类: PHP 标签: , ,

搞笑的Google Music。。。

2009年11月28日 Elmer 6 条评论

Google Music(http://music.google.cn)竟然不能用Google帐户登录,只能用人人、Live、Yahoo的帐户登录。汗死。。。。。。。Google Music登录

分类: 互联网 标签:

HTTP1.1 状态代码定义

2009年11月11日 Elmer 2 条评论

做WEB开发,对HTTP状态码的了解是必不可少的。
根据本人经验,常见的状态码有:200,304,404,500,502,503
参考资料:http://zh.wikipedia.org/zh-cn/HTTP%E7%8B%80%E6%85%8B%E7%A2%BC

100 Continue
101 Switching Protocols 阅读全文…

分类: PHP 标签: , , , , ,

UML学习笔记之UML概念模型(一)

2009年11月1日 Elmer 1 条评论

UML概念模型(一)

注:用况(use case)又常被称为“用例”
    本文所有图示均使用Visual Paradigm for UML 7.0 Community Edition绘制。

1. UML构造块:事物、关系、图。

1.1. UML中的事物:结构事物、行为事物、分组事物、注释事物

1.1.1. 结构事物(structural thing)UML模型中的名词。通常是模型的静态部分,描述概念元素或物理元素。结构事物总称为类目(classifier)阅读全文…

分类: 软件工程 标签: