标签归档:PHP

累了,也要坚持着。有熊就要来了。

不知不觉,又加班过了十一点,末班的地铁二号线已经木有了。刚刚弄完一个功能,样式需要明天找东伟调整。

肩膀开始酸了,意味着最近我太疲劳了,渴望能够休假,身体实在要吃不消了。

再加把劲,有熊上线后,能放松一下吧,也许。

只能打车回去了,大家,晚安。

curl伪造reffer抓取图片资源的方法

为了给同事批量抓一些素材,写了段程序,自动抓100多个页面的5000多张图,对方站点防盗链开启了,只能用图片所在页面地址做reffer才能抓图,于是用curl伪造reffer。函数贴出来,备忘,函数本身可以模仿Baidu蜘蛛,由同事乐乐友情提供,我稍稍修改了一下,感谢一下乐乐同学。

function baiduSpider($url,$reffer){
        $ch = curl_init();
        $user_agent = “Baiduspider+(+http://www.baidu.com/search/spider.htm)”;//这里模拟的是百度蜘蛛     
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_REFERER, $reffer);//这里写一个来源地址,可以写要抓的页面的首页     
        curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
        $temp=curl_exec($ch);
        return $temp;      
}

学到一个函数clearstatcache()

用PHP在做图片缩略的时候,原图被我缩略后以相同的路径,相同的文件名存放缩略图。在缩略前,我读取了原图的文件大小,缩略后我用filesize()函数获取缩略后的文件大小总是不对,读出来总是缩略前原图的大小,当时猜想可能被系统缓存了,后来Google之才知道,PHP文件操作的时候,如果在一个脚本中会对同路径的同名文件进行操作,PHP会缓存文件的相关信息,以提升速度。在对同一个文件做更改,删除等操作后如果需要获取此文件信息,就必须调用clearstatcache()来清除系统文件信息缓存。摘抄一下PHP函数文档:

说明
void clearstatcache ( void )
当使用 stat(),lstat() 或者任何列在受影响函数表(见下面)中的函数时,PHP 将缓存这些函数的返回信息以提供更快的性能。然而在某些情况下,你可能想清除被缓存的信息。例如如果在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,你需要清除文件状态缓存。这种情况下,可以用 clearstatcache() 函数来清除被 PHP 缓存的该文件信息。

必须注意的是,对于不存在的文件,PHP 并不会缓存其信息。所以如果调用 file_exists() 来检查不存在的文件,在该文件没有被创建之前,它都会返回 FALSE。如果该文件被创建了,就算以后被删除,它都会返回 TRUE

Note: 本函数缓存特定文件名的信息,因此只在对同一个文件名进行多次操作并且需要该文件信息不被缓存时才需要调用 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()。