今天Sugarhosts告诉我,说我的网站时不时的会那个一下(就是CPU占用会瞬间飙升至70%,然后又瞬间跌下来)。我知道,肯定是我的手机版高飞造成的。不过在我看来有两个可疑的地方,一个是远程URL调用的步骤,另一个是自己写的xml拆解重组的步骤。为了搞清楚到底是哪块造成CPU飙升,自己写了N个测试文件,把地址发送给Sugarhosts让他们测试看哪个文件会造成CPU飙升。
结果让我有些意外,不是我料想的对xml拆解重组时有问题,而是在远程调用URL的时候会造成CPU飙升。再详细点就是:
使用file_get_contents函数打开远程文件的时候会造成CPU飙升。
知道了这个结果,我又写了两个测试文件。一个是用curl进行远程URL调用,另一个是用file_get_contents打开本地文件。测试的结果一切正常。呼,至少file_get_contents在打开本地文件时还是正常的,这玩意可比用fopen方便多了。不过在远程URL调用的时候又得用那相对麻烦的curl了...
再补充:我上上一篇文章说的get_headers函数经测试也会造成CPU飙升。不过由于他只获取HTTP头,所以飙升的没有file_get_contents那么厉害,请大家酌情使用。不过我是肯定会把我那云端链转换工具的探测步骤换成curl了。
Update: 在PHP的Bug提交页面上我也见到有其他人提交了这个问题了,貌似在新版的PHP里已经解决这个问题了,不过不是很确定,自己没有测试,只是上面说新版里没有重现而已。

2010-08-12 15:58
如果file_get_contents效率不高,用fsockopen()效果如何。。