今天在测试 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缓存。
例如以下一段程序:
最后会输出
int(13)
int(13)
int(26)
但是通过阅读PHP源码,我发现只有在对本地文件进行unlink, rename和rmdir操作时会清除stat缓存,而在通过其他的wrapper进行unlink, rename和rmdir操作时,并不会清除stat缓存。因此在写wrapper时我们要自己在unlink等方法中通过clearstatcache()来清除stat。
下面是来自 Commandlinefu 网站由用户投票决出的 10 个最酷的 Linux 单行命令,希望对你有用。
sudo !!
以 root 帐户执行上一条命令。
python -m SimpleHTTPServer
利用 Python 搭建一个简单的 Web 服务器,可通过 http://$HOSTNAME:8000 访问。
:w !sudo tee %
在 Vim 中无需权限保存编辑的文件。
cd -
更改到上一次访问的目录。
^foo^bar
将上一条命令中的 foo 替换为 bar,并执行。
cp filename{,.bak}
快速备份或复制文件。
mtr google.com
traceroute + ping。
!whatever:p
搜索命令历史,但不执行。
$ssh-copy-id user@host
将 ssh keys 复制到 user@host 以启用无密码 SSH 登录。
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
把 Linux 桌面录制为视频。
原文地址:http://linuxtoy.org/archives/top-10-one-liners.html
PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。
使用这种语法时需要注意:elseif不可以分开写为else if,否则会编译不通过
阅读全文…
貌似好久没写日志了
今天在手册中查rand()用法时,无意发现了mt_rand()这个函数。
很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 » Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。
手册真的是个好东西呀,时常查查手册,也能发现不少小技巧,呵呵。
送Google Wave邀请了,想要同学的请在评论里留下Gmail邮箱。
原文地址:PHP 中巧用数组降低程序的时间复杂度.
级别: 初级
王 丹丹, 高级软件工程师, IBM
2009 年 11 月 26 日
本文主要是介绍在 PHP 的编程中,如何巧用数组来降低因多层循环而引起的时间复杂度的问题。特别是当程序需要多次与数据库交互时,用此方法来优化你的代码,将会带给意想不到的效果。
阅读全文…
Google Music(http://music.google.cn)竟然不能用Google帐户登录,只能用人人、Live、Yahoo的帐户登录。汗死。。。。。。。