开发中又遇到一些事情,于是记录一下
1、CURL的问题
curl在安全模式下或者设定了open_basedir的情况下,如果使用了OPT_FOLLOWLOCATION,会导致无返回值。这个理由很多,但FOLLOWLOCATION这个参数是用于目标网址会多次跳转而使用,还可以设置最大跳转次数,因此,如果你要抓取的对象有多次跳转,这个参数就非设不可(真纠结,实在不行就file_get_contents了,它自动支持多次跳转,但不如curl更可控一些)
具体关于CURL的一些常用参数,可以看这里:
- curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
- //HTTP协议的版本号
- curl_setopt($ch, CURLOPT_NOPROGRESS, 1);
- //如果你不会PHP为CURL传输显示一个进程条,设置这个选项为一个非零值。注意:PHP自动设置这个选项为非零值,你应该仅仅为了调试的目的来改变这个选项。
- curl_setopt($ch, CURLOPT_NOBODY, 0);
- //如果你不想在输出中包含body部分,设置这个选项为一个非零值。
- curl_setopt($ch, CURLOPT_HTTPGET, 1);
- //设置HTTP请求的方法为GET
- curl_setopt($ch, CURLOPT_ENCODING, ”);
- //设置HTTP请求头中可接受的压缩格式
- curl_setopt($ch, CURLOPT_COOKIEFILE, 1);
- //传递一个包含cookie数据的文件的名字的字符串。这个cookie文件可以是Netscape格式,或是堆存在文件中的HTTP风格的头。
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- //设置这个选项为一个非零值(象 “Location: “)的头,服务器会把它当做HTTP头的一部分发送(注意这是递归的,PHP将发送形如 “Location: “的头)。
- curl_setopt($ch, CURLOPT_MAXREDIRS, 3);
- //最多可以进行几次HTTP重定向,一般和curl_followlocation联用
- curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)’);
- //在HTTP请求中包含一个”user-agent”头的字符串
- $http_header = array();
- $http_header[] = ‘Connection: Keep-Alive’;
- $http_header[] = ‘Pragma: no-cache’;
- $http_header[] = ‘Cache-Control: no-cache’;
- $http_header[] = ‘Accept: */*’;
- $http_header[] = ‘Host: ‘.$url_ary['host'];
- curl_setopt($ch, CURLOPT_HTTPHEADER, $http_header);
- //一个数组格式的HTTP头文件格式
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- //将curl_exec的返回值转换成一个字符串,而不是直接输出出来
- curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
- //设置一个长整形数,作为最大延续多少秒
- curl_setopt($ch, CURLOPT_REFERER, $url);
- //在HTTP请求中包含一个”referer”头的字符串
- curl_setopt($ch, CURLOPT_URL, $url);
- //这是你想用PHP取回的URL地址。你也可以在用curl_init()函数初始化时设置这个选项
2、命令下行指定用户组来执行命令
最偷懒的方法就是:su www -c 'php xxx.php'
3、hightman遇到的Javascript函数parseInt(''),返回NaN,这个让我想起有个人做了一个PPT,来说明JS中的一些特殊问题,它的地址是:http://neatstudio.com/show-1987-1.shtml
4、PHP的header跳转
大家都知道header("Location:http://xxx.xxx.com");在这个之后如果你file_put_contents内容去一个文件,还是会被执行的,于是我们习惯性的在header跳转后继续处理一些内容,即不影响跳转,也可以完成一些内容性的处理。
但尝试了一下,如果是header()下面跟上sleep(10);你会发现header不会即刻跳转了,会等10秒后再跳转。
因此,现在了解header跳转还是会受原有代码的影响的。
5、HTML5的a标签属性ping
ping的属性说的很好,当a有href属性时,如果有ping属性,会在跳转链接时候,自动ping网站(ping标签中的对应网站),但测试了一下之后发现。居然没用。查看了一下资料,我操:
6.6 Changes from 4 March 2010 to 24 June 2010
- The
ping
attribute has been removed from the W3C version of HTML5.
我郁闷啊。。。
-------EOF------