找回密码
 加入怎通
查看: 553|回复: 4

[其他] PHP CURL函数详解

[复制链接]
qq41848501 发表于 2013-05-19 08:43:30 | 显示全部楼层 |阅读模式
  公司近期决定做一个SEO的宣传站来介绍公司自己的业务,同时也想借助百度的力量吸引一些客户,于是我们选择了些关键词。从选词到网站策划以及网站建设的每个步骤我们都很小心,我们做的每个事情都是想我们的网站列适合网站的蜘蛛的抓取习惯。网站的每个页面都采用DIV+CSS布局,网站的结构也不错,网址采用伪静态的方式更适合蜘蛛的抓取,网站的内容保持伪原创或原创。虽然做了这么多的工作,自认为每个工作都很到位,但是效果真的很打击人,网站内页的收录一直不是很理想,网站的首页快照也超是10天以上,真的很叫人伤心啊,做了这么多的网站都还可以,但是做自己网站的时候,竟然是这个结果,哎!结果不是很理想,这些是个人整理的一些资料分享一些。3 Y( a8 x" W3 x+ H) K* M

" T" ^& ~! V1 D$ z$ S; V9 @; T  PHP CURL函数详解; o2 H) B7 \% ^0 o
/ N  |6 w) W7 g, Q' {
  PHP中的CURL函数库(Client URL Library Function)2 M# H! p: `  x2 n8 i. ?

3 L! B, T+ v, @7 K5 |  curl_close —关闭一个curl会话
3 n& E$ J( v. J8 B
. b* `4 _5 W- i# g: V  curl_copy_handle —复印一个curl连署资源的所有内容和参变量
; g/ L& ]% t# e! t: k. W. G: P& w, T* m, y$ I. x; X/ j6 j# `
  curl_errno —回返一个包含现时会话不对信息的数码编号
+ o- i! h* p5 w- o) W
" N0 V/ }0 a; b8 z6 o* X. H  curl_error —回返一个包含现时会话不对信息的字符串
$ L5 N5 \2 F6 n( Z+ K
! P, c" C. T4 O8 `) w* ~2 {  curl_exec —执行一个curl会话
  y! c, _/ l9 u! v6 ^
7 w* j; r0 c+ i1 T, v# X- y  curl_getinfo —获取一个curl连署资源句柄的信息
! K5 V" D8 \; n$ A
7 k$ w9 _: ]$ f$ H3 I, g  curl_init —初始化一个curl会话
3 Y) B& V5 @: d, E5 Q) m
" I( i: L0 K. u  curl_multi_add_handle —向curl批办理会话中添加单独的curl句柄资源
: o0 H+ K9 d3 B7 l, i8 h, x3 I) G2 U" B  u
  curl_multi_close —关闭一个批办理句柄资源
# s7 k4 ?- I" D6 C
$ @2 Y: y5 V0 |+ ~$ B' U$ {  curl_multi_exec —解析一个curl批办理句柄
# x; \8 u7 Z  r. V5 h2 V9 B( X3 ~9 p, R8 C: M
  curl_multi_getcontent —回返获取的输出的文本流
2 m& j1 |6 A! R  m/ J- g9 j8 d: E  m! D
  curl_multi_info_read —获取现时解析的curl的相关传输信息2 Y6 {3 R, c9 b" m4 K8 _
- ?/ j) W" T, p' P  ^
  curl_multi_init —初始化一个curl批办理句柄资源* P5 R* `) z, ~1 L" A- h
" p/ e0 ?5 m7 T5 q8 E
  curl_multi_remove_handle —移除curl批办理句柄资源中的某个句柄资源/ j+ _' L0 M1 x
% P& r- J3 a. f/ Y, Y$ [
  curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"  X" i# o; R! M

1 c! {/ j4 b8 N; Y/ O$ G8 X  curl_setopt_array —以数组的仪式为一个curl设置会话参变量
6 W( j; T/ Q! N9 C$ p; [* J0 s4 Z7 K* V( k
  curl_setopt —为一个curl设置会话参变量curl_version —获取curl相关的版本信息* g5 ]& {0 Y5 p% N

0 f. R7 P2 E6 W' J0 [. J! e  curl_init()函数的效用初始化一个curl会话,curl_init()函数唯一的一个参变量是可选的,表达一个url地址。
6 r) f5 b3 n4 P( P
( t) d) G6 X( ]  curl_exec()函数的效用是执行一个curl会话,唯一的参变量是curl_init()函数回返的句柄。curl_close()函数的效用是关闭一个curl会话,唯一的参变量是curl_init()函数回返的句柄。6 `$ P- }% e$ O; U# B" V
) ~9 S- B; y7 R6 K! d+ t
  curl_version()函数的效用是获取curl相关的版本信息,curl_version()函数有一个参变量,不明白是做啥子的8 @4 v( N3 n! Y1 u- v3 Y( Q7 H
, T: r1 J3 H8 k5 J0 D( o: t0 C) |
  curl_getinfo()函数的效用是获取一个curl连署资源句柄的信息,curl_getinfo()函数有两个参变量,第一个参变量是curl的资源句柄,第二个参变量是下边一点恒量:) o! ?2 w; N8 s: f! G
9 ~' U% k" n& A* L7 }* }. `  ?
  可选的恒量涵盖:9 A. \. V- j3 E5 [! L% R1 k+ [8 s% u2 ^

, ?' {( S0 a1 K; @, Q# V2 e8 O  CURLINFO_EFFECTIVE_URL最终一个管用的url地址- E& `3 F) i; f7 S6 b
9 r. _4 ?) o; r
  CURLINFO_HTTP_CODE最终一个收到的HTTP代码
8 J5 u: ?/ h3 m; w2 ?9 g5 E) ^4 j
. `0 G$ Z8 H1 I) x  CURLINFO_FILETIME长程获取文档的时间,假如无法获取,则回返值为“-1”
6 a' H, ]4 y5 V; B' D9 [( i
4 Q, _. O$ v( Q% v3 @6 O  CURLINFO_TOTAL_TIME最终一次传输所耗费的时间
4 P+ n) q+ |; z7 R
& f7 E. y7 w+ Q1 V* i  CURLINFO_NAMELOOKUP_TIME名称解析所耗费的时间
! q7 ]2 N% ~0 j# i# x- q$ S  n4 s2 F( p/ |( Z
  CURLINFO_CONNECT_TIME开办连署所耗费的时间$ s" v% k! [3 r- z1 E2 y

  l- X. X. Y4 z7 g  CURLINFO_PRETRANSFER_TIME从开办连署到准备传输所使役的时间2 m2 d7 |/ j% N$ u4 o! o1 z; O! {

9 ?$ b- N0 }5 u/ i  CURLINFO_STARTTRANSFER_TIME从开办连署到传输起始所使役的时间- f9 \8 Y5 }" Q3 w
6 Y* C& n1 @. B+ W
  CURLINFO_REDIRECT_TIME在事务传输起始前重定向所使役的时间2 H9 ?# ~- B0 H( s$ X" G
4 @, J: x( }  h# p) c* F4 N3 |' |8 ^
  CURLINFO_SIZE_UPLOAD上传数据量的总值" e8 B- d; ~* S# L- |# D
* m* `3 i1 T. R. b: w
  CURLINFO_SIZE_DOWNLOAD下载数据量的总值
, M% t$ i9 S' [. i! Q0 a# W* W' n8 E+ m
  CURLINFO_SPEED_DOWNLOAD均等下载速度! K) A+ u5 r* U6 j

& E" x' S. i0 `! m$ k' H  CURLINFO_SPEED_UPLOAD均等上传速度! a  Y  ?  C0 ^9 F) x# [! K
  q  T5 s5 L4 g7 M, i4 h
  CURLINFO_HEADER_SIZEheader局部的体积
9 o6 }( R" H; W  N  _$ q: @) y
: X; @$ x4 N3 q& R1 w  CURLINFO_HEADER_OUT发送烦请的字符串
, s. k0 `+ k; k1 j  h( W, o$ A: X# o% f& }7 |9 y; X
  CURLINFO_REQUEST_SIZE在HTTP烦请中有问题的烦请的体积
4 `/ w- W* T+ g) c0 D
9 e  S) P% U2 t  CURLINFO_SSL_VERIFYRESULTResult of SSL certification verification requested by setting CURLOPT_SSL_VERIFYPEER
" U6 n' g+ w1 j+ d4 ~* b
. F- o# Z2 E6 }7 n6 Y, ^  CURLINFO_CONTENT_LENGTH_DOWNLOAD从Content-Length: field中读取的下载内容长度2 f7 |& D" N8 u7 ~9 P4 L4 B
8 g' E& {' P3 h' l# ?/ a& `
  CURLINFO_CONTENT_LENGTH_UPLOAD上传内容体积的申说
1 P$ I( |0 e& B. m1 _: e+ d
8 o- `2 M0 J5 P! b& p, X- P  CURLINFO_CONTENT_TYPE下载内容的“Content-type”值,门里出身表达服务器没有发送管用的“Content-Type: header”
- ~/ s& b3 l9 @* b4 w8 T
- O) D( O' y- _' _# S) f' q; k  curl_setopt()函数的效用是为一个curl设置会话参变量。curl_setopt_array()函数的效用是以数组的仪式为一个curl设置会话参变量。
8 \/ q: c& O8 Q  x( ~) i4 r6 e  M0 \0 |5 J3 r
  \'
2 _' @" l" ^  P; B! H; {2 q) N* l( c! D  X
  CURLOPT_HEADER => false+ |$ j' e/ [/ c; @* P  J
5 V! L5 W$ p; ^
  );* \1 a" y) E* Y2 D( v$ T# S

& p: U3 U6 G- |$ N9 I  curl_setopt_array($ch, $options);' T  y  P+ X# C& L! k1 f  R7 E
8 _2 |0 c, |1 ?( F5 z' E
  curl_exec($ch);$ X- q  O! D% u% \) j. X) f* l
6 _: H# f" `) R  w# N+ M* b
  curl_close($ch);
( u+ e. K3 r! V% j% \7 J; P' h& }
  fclose($fp);
- _3 o* s! l. @# C; R' y# Y1 x1 m' n5 l6 g" y, b
  ?>可设置的参变量有:# q( w; {% b$ O& G9 l, @6 ?
/ W/ m$ Y; _7 Q) C. F5 c
  CURLOPT_AUTOREFERER半自动设置header中的referer信息
: A$ C( e2 A4 ^! f2 F# B' z4 J; c% S- H
  CURLOPT_BINARYTRANSFER在启用CURLOPT_RETURNTRANSFER时分将获取数据回返. u6 k6 @: ]0 }! y! x- h

. A8 Q- G  ]0 X& w) A- ?8 s% A& m  CURLOPT_COOKIESESSION启用时curl会仅只传送一个session cookie,疏忽其它的cookie,默认状态下curl会将所有的cookie回返给服务端。session cookie是指那些用来判断服务器端的session是否管用而存在的cookie。& e& `% ~1 ^& J% D8 e4 q* L

8 E) }% m9 S' a4 f  CURLOPT_CRLF启用时将Unix的换行符转换成回车换行符。
7 }; p0 Q7 b) {, q2 {0 l& z) e" Z2 ?
  CURLOPT_DNS_USE_GLOBAL_CACHE启用时会启用一个全局的DNS缓存,此项为线程安全的,而且默认为true。2 p) z9 j# Z$ U) S( n" w

9 h8 A8 U4 ~. o! C  CURLOPT_FAIL0NERROR预示HTTP面貌码,默认行径是疏忽编号小于等于400的HTTP信息) _8 b* O; d5 m. z- _

; c+ E5 w0 o2 e- ]  CURLOPT_FILETIME启用时会尝试修改长程文档中的信息。结果信息会经过curl_getinfo()函数的CURLINFO_FILETIME选项回返。- Q8 g' g7 |0 Z6 Q

0 C; Y! W2 |4 C! e$ [7 l2 C% o; P  CURLOPT_FOLLOWLOCATION启用时会将服务器服务器回返的“Location:”放在header中递归的回返给服务器,使役CURLOPT_MAXREDIRS可以框定递归回返的数量。
; A, \3 B& U$ r8 z
8 f3 r* m8 ?/ p  CURLOPT_FORBID_REUSE在完成交互之后强制断裂连署,不得重用。
7 A3 Q/ ?+ s! i' `! \6 K1 }+ I) t: j
  CURLOPT_FRESH_CONNECT强制获取一个新的连署,替代缓存中的连署。: T/ u8 R# i- l6 U  s" k6 \0 g
/ O$ z4 `% y* ]5 a4 p$ Z1 H
  CURLOPT_FTP_USE_EPRT
' `" ?; W: l# L" U/ t
; t, ?9 w8 e! N4 l2 j  TRUE to use EPRT (and LPRT) when doing active FTP downloads. Use FALSE to disable EPRT and LPRT and use PORT only.Added in PHP 5.0.0.* y# q. u# U: ?" c+ `4 f
! W5 x1 Q3 \3 T# U
  CURLOPT_FTP_USE_EPSVTRUE to first try an EPSV command for FTP transfers before reverting back to PASV. Set to FALSE to disable EPSV.
: C+ L8 \+ L3 x0 x5 _* i9 N( G! |- l, n) w  S0 h. [$ i8 k
  CURLOPT_FTPAPPENDTRUE to append to the remote file instead of overwriting it.! V# S3 A) d6 a. ^' s' ~) m1 T7 D

1 l4 I* q% \1 ~! T9 s5 n' }  CURLOPT_FTPASCIIAn alias of CURLOPT_TRANSFERTEXT. Use that instead.! h( f# S9 U1 x. a

2 w: z$ a/ E( c0 S' |6 k  CURLOPT_FTPLISTONLYTRUE to only list the names of an FTP directory.; s& [  _+ V1 H3 j4 u

, A8 I$ _6 D4 m: O# G  CURLOPT_HEADER启用时会将头文件的信息作为数据流输出。
+ O/ {" T+ I* h7 U9 O' [  B& A
: N1 G# w* Z6 p1 E/ Z, @4 c9 p  CURLOPT_HTTPGET启用时会设置HTTP的method为GET,因为GET是默认是,所以只在被修改的况下使役。
  d7 t9 v. o/ f8 H3 I4 ^* \/ _8 K0 d. v. a0 q" W3 w! |
  CURLOPT_HTTPPROXYTUNNEL启用时会经过HTTP摄理来传输。. x8 o3 a( M/ c/ @0 Y
$ ?+ l  M8 d: c0 W
  CURLOPT_MUTE讲curl函数中所有修改过的参变量光复默认值。
$ h+ z) f# f( d! e6 O! G* m" @
! H6 r: c% P- R9 U9 A3 r! h  CURLOPT_NETRC在连署开办之后,过访~/rc文件获取用户名和密码信息连署长程站点。: H( K$ r& A% s% X* O3 h1 Q
, R. v0 z. t* _$ i( R
  CURLOPT_NOBODY启用时将不对HTML中的body局部施行输出。
8 [+ Z9 @9 i0 g- t3 p+ p5 S
: ~$ J) o2 q8 E8 w0 k  CURLOPT_NOPROGRESS启用时关闭curl传输的进度条,此项的默认设置为true* ~* I! v# A/ R  u

! }" u! M3 ?' K! m  CURLOPT_NOSIGNAL启用时疏忽所有的curl传送给php施行的信号。在SAPI多线程传输时此项被默认敞开。
5 I* G. O+ |8 I4 O1 P) o" J; B( S, ~( `, `- d) ?% _0 I! c2 ~
  CURLOPT_POST启用时会发送一个常理的POST烦请,类型为:application/x-www-form-urlencoded,就像表单提交的同样。" l3 R) M/ V" J. r. x3 F  F

5 J2 A; @; |& w2 ], Q  CURLOPT_PUT启用时准许HTTP发送文件,务必同时设置CURLOPT_INFILE和CURLOPT_INFILESIZE
- r! i7 D- j$ a' Z( _  s$ D$ B) I6 X- S" T9 F9 z
  CURLOPT_RETURNTRANSFER讲curl_exec()获取的信息以文件流的仪式回返,而不是直接输出。
& T1 b  w% }; O" j+ S2 H4 {
  Z# @: b- q! K. J! c0 H) O( d; i/ i$ X  CURLOPT_SSL_VERIFYPEERFALSE to stop cURL from verifying the peer\'s certificate. Alternate certificates to verify against can be specified with the CURLOPT_CAINFO option or a certificate directory can be specified with the CURLOPT_CAPATH option. CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2). TRUE by default as of cURL 7.10. Default bundle installed as of cURL 7.10.8 m% L3 ]& x9 @3 Y) d
# e; P, z6 M2 U/ q* \3 p5 p
  CURLOPT_TRANSFERTEXTTRUE to use ASCII mode for FTP transfers. For LDAP, it retrieves data in plain text instead of HTML. On Windows systems, it will not set STDOUT to binary mode.
  _$ S. P& E( x/ U7 D; h$ ^0 W7 }& ?" O+ ~
  CURLOPT_UNRESTRICTED_AUTH在使役CURLOPT_FOLLOWLOCATION萌生的header中的多个locations中持续追加用户名和密码信息,纵然域名已发生变更。) M* p: ?6 z( e9 \7 E: e3 n. m

1 ]; U; R1 B+ a  T2 C$ M  CURLOPT_UPLOAD启用时准许文件传输
+ ]2 I0 y4 t4 F* u' v9 H
' d; T3 N; `$ _+ Y3 a  CURLOPT_VERBOSE启用时会汇报所有的信息,储存在STDERR或指定的CURLOPT_STDERR中/ ]0 _, r- I5 `3 a! _

: s3 @6 X+ B# V( {5 x  CURLOPT_BUFFERSIZE每每获取的数据中读入缓存的体积,这个值每每都会被充塞。
7 N. A- w6 s) Y, K6 u
- p3 J# V( Y, r# |* E3 L  以上就是这近2个月的建站分享,给刚刚步入小小草根做个参考!当然这只是我个人的看法、经验,硬邦邦的大草不要扔刀给我哈!扔点泥巴给我最好了!滋润下我们这些小小草啊!O(∩_∩)O哈哈~希望各位站长给些针对性的意见建议,指导下我怎么修改关键词才好!本文由亿万商学院 http://tv.51yiwan.com/ 收集整理欢迎转载请注明,谢谢合作7 E" ?2 E1 K3 O* G) s( l  ?" U

0 r6 s3 j+ i  w. H8 B: Q

暂时无法加载帖子列表

回复

使用道具 举报

286888037 发表于 2026-02-27 02:22:25 | 显示全部楼层
楼主辛苦了,整理这么多内容,必须点赞收藏
回复

使用道具 举报

夕颜Z 发表于 2026-03-02 06:01:38 | 显示全部楼层
说得很实在,没有夸大其词,这种真实分享太难得了
回复

使用道具 举报

小贱 发表于 2026-08-11 00:51:23 | 显示全部楼层
刚好遇到类似问题,看完这个帖子心里有底了
回复

使用道具 举报

ygl 发表于 2026-08-13 21:40:27 | 显示全部楼层
完全赞同,我也是这么认为的,英雄所见略同~
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-9-16 10:47 , Processed in 0.048939 second(s), 26 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表