找回密码
 加入怎通
查看: 510|回复: 2

[其他] PHP CURL函数详解

[复制链接]
qq41848501 发表于 2013-05-19 08:43:30 | 显示全部楼层 |阅读模式
  公司近期决定做一个SEO的宣传站来介绍公司自己的业务,同时也想借助百度的力量吸引一些客户,于是我们选择了些关键词。从选词到网站策划以及网站建设的每个步骤我们都很小心,我们做的每个事情都是想我们的网站列适合网站的蜘蛛的抓取习惯。网站的每个页面都采用DIV+CSS布局,网站的结构也不错,网址采用伪静态的方式更适合蜘蛛的抓取,网站的内容保持伪原创或原创。虽然做了这么多的工作,自认为每个工作都很到位,但是效果真的很打击人,网站内页的收录一直不是很理想,网站的首页快照也超是10天以上,真的很叫人伤心啊,做了这么多的网站都还可以,但是做自己网站的时候,竟然是这个结果,哎!结果不是很理想,这些是个人整理的一些资料分享一些。
8 Z; s% X: z* h, s( I+ M8 u6 \) U4 x! x& Q* b2 L. g: ]. \
  PHP CURL函数详解/ |; c$ S4 O3 s7 F. Q5 }. n5 C

  ~! W: j* V" _* }9 Q! f  PHP中的CURL函数库(Client URL Library Function)8 ~4 S, K6 b8 ]3 \. N
. i/ Y' R% Y! X$ \( u
  curl_close —关闭一个curl会话
2 z9 f9 ?  C  y# t+ o- |' \9 d3 _8 D1 G. _6 m' d. x
  curl_copy_handle —复印一个curl连署资源的所有内容和参变量3 B" a% f* X! T4 ]- D" w) U6 v
& p2 ]4 G7 u. J7 T6 W# R
  curl_errno —回返一个包含现时会话不对信息的数码编号
$ [1 P6 w8 _4 Y4 j0 j
; D9 R, T& O& v- t0 ^# j, W3 Q  curl_error —回返一个包含现时会话不对信息的字符串1 p5 J4 h; D1 d0 }$ N* n

' W* P$ O5 q* @/ P1 \- V  curl_exec —执行一个curl会话4 e1 Z+ V" a$ o  s7 ^, u

  A* O7 o7 Z" l/ I2 v  curl_getinfo —获取一个curl连署资源句柄的信息& \5 E: S# a2 s+ g0 a/ o

( l8 t8 S+ z! t& z  curl_init —初始化一个curl会话" R9 F0 {5 Y) W9 t( Q6 o
8 [& `8 W) D" L
  curl_multi_add_handle —向curl批办理会话中添加单独的curl句柄资源
' [1 T) ?+ }9 ~. `
; W& J& G6 X2 l/ }' d  curl_multi_close —关闭一个批办理句柄资源% g) s6 A, G" F8 h9 |

) o3 e, C. N  O  curl_multi_exec —解析一个curl批办理句柄2 L& c% X2 J9 s: y# G* T/ r
* ^  C5 l. X/ ^" s  S
  curl_multi_getcontent —回返获取的输出的文本流
: g8 I2 j5 d' o7 ?; X; B8 v6 H* h* g  J+ M9 z
  curl_multi_info_read —获取现时解析的curl的相关传输信息
5 F; h; A+ q  m/ r+ C- V
7 d. j# `5 Q9 p  curl_multi_init —初始化一个curl批办理句柄资源
" s4 P! J/ w* |, J  `; l9 J3 q
, v- X/ ?$ L5 c  curl_multi_remove_handle —移除curl批办理句柄资源中的某个句柄资源
- W, c6 O- S" x( e% F8 y! @" B$ q: t% f8 Q9 \. J. c
  curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected") [' ^* x. T- Y; Z, h) k6 U
) p5 ~& p- L9 K% p# L
  curl_setopt_array —以数组的仪式为一个curl设置会话参变量1 Z' u3 p& W- D$ U  _

. _+ S8 o- t+ J* S2 [  curl_setopt —为一个curl设置会话参变量curl_version —获取curl相关的版本信息: R* N$ q7 O( z

+ O' F# I# {9 x  curl_init()函数的效用初始化一个curl会话,curl_init()函数唯一的一个参变量是可选的,表达一个url地址。
) K, z% z! t3 A, v/ |
1 w7 l/ e+ x: K6 X6 U  curl_exec()函数的效用是执行一个curl会话,唯一的参变量是curl_init()函数回返的句柄。curl_close()函数的效用是关闭一个curl会话,唯一的参变量是curl_init()函数回返的句柄。
; f; Q% f# c# G% Y  L. f7 h9 Y' @8 x) Q. x
  curl_version()函数的效用是获取curl相关的版本信息,curl_version()函数有一个参变量,不明白是做啥子的
: {6 k* j' v. X6 t" l2 [6 r" e1 M* N
  curl_getinfo()函数的效用是获取一个curl连署资源句柄的信息,curl_getinfo()函数有两个参变量,第一个参变量是curl的资源句柄,第二个参变量是下边一点恒量:0 D4 _) w* x) l
& `, |% K/ B9 n! {5 u% [
  可选的恒量涵盖:
0 E5 T. q: g- J9 ?# W' v' T) O0 ], N7 @
  CURLINFO_EFFECTIVE_URL最终一个管用的url地址
1 u% X2 b! I6 r( v0 N3 J
2 K' y3 W5 W) U7 k3 T2 {  CURLINFO_HTTP_CODE最终一个收到的HTTP代码
/ b  u0 F# q/ Y# u0 G; z* {+ Q9 z
; E: V8 t( w: W0 L  CURLINFO_FILETIME长程获取文档的时间,假如无法获取,则回返值为“-1”' m; P% a8 d5 I5 v/ E2 |* V/ U

9 R$ y0 Q5 ^2 H# S. M1 G# A  CURLINFO_TOTAL_TIME最终一次传输所耗费的时间
% `/ Y! R' B/ J; \% }% L9 V1 Q; q3 k- s, A$ E# m: `1 `8 v" K/ S
  CURLINFO_NAMELOOKUP_TIME名称解析所耗费的时间
, c' T/ H' y, p% f; _9 q0 a9 e& ~& B2 w# {, O, W- q) p$ p
  CURLINFO_CONNECT_TIME开办连署所耗费的时间
# ?# Z6 x7 l% B! F6 g4 e# V7 z- w5 Y' T8 v
  CURLINFO_PRETRANSFER_TIME从开办连署到准备传输所使役的时间2 s  @* r: L) N+ v- r) J
( j# f5 Z/ L3 w, r3 ?  V3 h
  CURLINFO_STARTTRANSFER_TIME从开办连署到传输起始所使役的时间
+ o- W, U0 A+ V& d* m2 t2 M3 @; m) [" u  j, o( k+ `' h4 X
  CURLINFO_REDIRECT_TIME在事务传输起始前重定向所使役的时间9 L0 e' N  X4 O9 F$ J
& w" n& L8 S7 |5 w: t
  CURLINFO_SIZE_UPLOAD上传数据量的总值
1 k* ?- y3 a. H4 k6 D( s* x1 |$ g2 M6 Z7 r2 H/ ]
  CURLINFO_SIZE_DOWNLOAD下载数据量的总值
; X" O2 r3 ^5 {4 ^1 R3 n
: q( q+ f8 s2 z' z6 E' d& m4 T  CURLINFO_SPEED_DOWNLOAD均等下载速度  K2 h! |( s2 ?) r

$ u! D, ^# [/ ?6 s% l- u  CURLINFO_SPEED_UPLOAD均等上传速度0 F" |4 ]% t/ @. ^

7 l( `. Q" C6 e; d' ]9 F/ Z  CURLINFO_HEADER_SIZEheader局部的体积! Z& }, J9 N, U

  \) Z; F! y# j7 T  CURLINFO_HEADER_OUT发送烦请的字符串
8 t, ?8 p1 s2 v2 u2 l$ \' H! h6 Z. t& U! \
  CURLINFO_REQUEST_SIZE在HTTP烦请中有问题的烦请的体积8 O3 ?" l: W7 d6 H0 K* C7 b
+ T* [, E! T9 p5 j1 n
  CURLINFO_SSL_VERIFYRESULTResult of SSL certification verification requested by setting CURLOPT_SSL_VERIFYPEER% I/ d5 p+ A* L) h2 ~0 |
+ _' q+ W" X4 h9 z3 S6 y
  CURLINFO_CONTENT_LENGTH_DOWNLOAD从Content-Length: field中读取的下载内容长度
$ ^; O+ f8 @6 V; `8 t% w2 J# d  r' \; j
  CURLINFO_CONTENT_LENGTH_UPLOAD上传内容体积的申说& o3 D1 N$ R8 e1 `. p" r
& ]  T9 f* ]$ d9 l2 S3 p
  CURLINFO_CONTENT_TYPE下载内容的“Content-type”值,门里出身表达服务器没有发送管用的“Content-Type: header”* Y; w3 u2 h0 Q7 z

, \  h  S! M. o2 v8 `  curl_setopt()函数的效用是为一个curl设置会话参变量。curl_setopt_array()函数的效用是以数组的仪式为一个curl设置会话参变量。
5 J: N, s$ z7 Z6 B3 `
5 U" f5 W- a' M. R% e, v9 L! k  \'
& d: n* }$ N8 M! Z
* N0 x8 z5 c: F# C6 ?6 D1 k  CURLOPT_HEADER => false/ a# ]. z* P- w- w9 w3 V0 X

, E( ?  u) @; g, D% D4 v5 Q  );
5 H  d: ?# n. N* t, C) F, l; j) P. u8 B* E
  curl_setopt_array($ch, $options);
. l1 S: a4 h6 l, \/ n# e/ O: k* k
  curl_exec($ch);4 w* c4 h2 X& |

8 g9 R/ X" U! O" k  curl_close($ch);
  X1 O( r2 @* o2 z, ]7 F
. n- _) G0 Y. o4 C' h' g6 ]) s  fclose($fp);' T; `6 k- c2 Y/ ?( }
' h4 J( W: Y* e
  ?>可设置的参变量有:, C2 R. c- y( k
7 a2 C  H& C2 I1 G3 [& \- c
  CURLOPT_AUTOREFERER半自动设置header中的referer信息
8 A( R+ l* u# a4 F' J
5 g: `2 c  {1 k5 _  CURLOPT_BINARYTRANSFER在启用CURLOPT_RETURNTRANSFER时分将获取数据回返
, |1 }1 H& m6 u. w9 s- w. o+ f4 A9 \* a1 M  E
  CURLOPT_COOKIESESSION启用时curl会仅只传送一个session cookie,疏忽其它的cookie,默认状态下curl会将所有的cookie回返给服务端。session cookie是指那些用来判断服务器端的session是否管用而存在的cookie。
& v3 u' a4 Q8 _$ I3 z, Y2 q9 H3 q6 Z! A0 {* _  a
  CURLOPT_CRLF启用时将Unix的换行符转换成回车换行符。+ V& w" L8 C: T$ |3 m: W/ k: k
) @. M0 T5 Y: l3 x' `2 p9 k
  CURLOPT_DNS_USE_GLOBAL_CACHE启用时会启用一个全局的DNS缓存,此项为线程安全的,而且默认为true。) M& g! J) q$ h3 z8 q$ n# x$ q! X( T
( x6 r/ U. q! A
  CURLOPT_FAIL0NERROR预示HTTP面貌码,默认行径是疏忽编号小于等于400的HTTP信息
" R+ V% B% r: u$ q$ Q/ r7 M5 w6 G$ K! |0 G
  CURLOPT_FILETIME启用时会尝试修改长程文档中的信息。结果信息会经过curl_getinfo()函数的CURLINFO_FILETIME选项回返。& s% U  O' H$ R$ D
2 G  ^% \4 g4 Q2 N  o5 Q
  CURLOPT_FOLLOWLOCATION启用时会将服务器服务器回返的“Location:”放在header中递归的回返给服务器,使役CURLOPT_MAXREDIRS可以框定递归回返的数量。% j  q- ]) P3 c% b3 {1 I8 ~: S

& [' }' H3 b# A% n8 n0 v  CURLOPT_FORBID_REUSE在完成交互之后强制断裂连署,不得重用。9 _$ A9 g4 y. }# Z6 L

9 G' I) o8 X/ a7 i, _0 t8 x  CURLOPT_FRESH_CONNECT强制获取一个新的连署,替代缓存中的连署。
* v* M, K* T. x. ^; \
$ t2 W9 {1 E% Z, h  CURLOPT_FTP_USE_EPRT1 e  ~% q) a1 [6 U3 N0 _5 \
" ]4 C9 R8 ~, o4 @
  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.
$ I: v4 U2 U. |0 B# a6 d. T, |! g" @8 h( {, I1 @1 b. K+ z% t
  CURLOPT_FTP_USE_EPSVTRUE to first try an EPSV command for FTP transfers before reverting back to PASV. Set to FALSE to disable EPSV.
) y% @- S8 c( r1 U$ L  k- p+ R) J2 p3 y5 d
  CURLOPT_FTPAPPENDTRUE to append to the remote file instead of overwriting it.
7 f  u; _  m% `5 P
! u1 K; u: F  y- h  CURLOPT_FTPASCIIAn alias of CURLOPT_TRANSFERTEXT. Use that instead.
; D$ s3 i! ~* [' k& p& A9 s. I- |  w2 B6 B2 L3 _5 H- u% M
  CURLOPT_FTPLISTONLYTRUE to only list the names of an FTP directory.
  L' [  b& Y3 J  g( U9 s
6 X7 y5 J, U* C1 a9 Z  CURLOPT_HEADER启用时会将头文件的信息作为数据流输出。% Y1 Q0 q3 G% O7 N; x# x. z9 n* R
  S, O' d" v9 g3 a/ |2 \$ {% P
  CURLOPT_HTTPGET启用时会设置HTTP的method为GET,因为GET是默认是,所以只在被修改的况下使役。, {3 J. s" S, {: r( c4 I- N- i

3 w8 a' a3 m1 Y/ h! ]! Z  CURLOPT_HTTPPROXYTUNNEL启用时会经过HTTP摄理来传输。
9 M, M3 ]' z7 i# r+ f  b& |& d6 m, g
  CURLOPT_MUTE讲curl函数中所有修改过的参变量光复默认值。
9 j" [( u8 g; z5 F/ L8 ?  q9 Z1 ^' o# A, z
  CURLOPT_NETRC在连署开办之后,过访~/rc文件获取用户名和密码信息连署长程站点。4 x) f) ~8 a) x0 M: F/ F6 |( p
" }3 g* |- d5 `
  CURLOPT_NOBODY启用时将不对HTML中的body局部施行输出。/ ?, n% n$ i  A- s2 O. A* H% t6 p5 ~, o
( {  T# `; h- C: v
  CURLOPT_NOPROGRESS启用时关闭curl传输的进度条,此项的默认设置为true: m3 p! O# u( p; t% O9 s

9 r8 p8 Q8 X" n9 O# k  CURLOPT_NOSIGNAL启用时疏忽所有的curl传送给php施行的信号。在SAPI多线程传输时此项被默认敞开。$ C! A$ W0 Q/ f& B4 g0 m- M

7 l) Z7 V& T4 F! g4 Q) z3 c  CURLOPT_POST启用时会发送一个常理的POST烦请,类型为:application/x-www-form-urlencoded,就像表单提交的同样。" h- d9 W" E; |' j+ _% E  _

/ i, B* e$ k$ U. M5 D  CURLOPT_PUT启用时准许HTTP发送文件,务必同时设置CURLOPT_INFILE和CURLOPT_INFILESIZE# h& A. p5 A7 i9 b
+ o# H8 T3 K" Y: z5 a; H
  CURLOPT_RETURNTRANSFER讲curl_exec()获取的信息以文件流的仪式回返,而不是直接输出。
1 E  F& h' ^. l. A" k5 B
, Z' L! s! g$ }7 H4 E" @  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.
2 v: C# ~$ R1 U! v+ l
( z6 O2 u( {$ ]$ _* }: e  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.! n& G1 r7 o) b6 x- x* c
9 k( h$ e) \0 s
  CURLOPT_UNRESTRICTED_AUTH在使役CURLOPT_FOLLOWLOCATION萌生的header中的多个locations中持续追加用户名和密码信息,纵然域名已发生变更。! O+ q2 U8 g; a  F) L

9 u7 C; j' Y+ k  CURLOPT_UPLOAD启用时准许文件传输
! ^# Y" R+ M# y2 ~9 e; s' I5 {) Q" [& \5 x( r6 }% j& H) K8 @
  CURLOPT_VERBOSE启用时会汇报所有的信息,储存在STDERR或指定的CURLOPT_STDERR中
5 J. I* p, \5 n! G" s; V" k8 c7 N5 w. }  M; Z
  CURLOPT_BUFFERSIZE每每获取的数据中读入缓存的体积,这个值每每都会被充塞。' E7 R* _" W9 {' |9 ~7 c

# R4 S' X3 {, S, D; p7 J  以上就是这近2个月的建站分享,给刚刚步入小小草根做个参考!当然这只是我个人的看法、经验,硬邦邦的大草不要扔刀给我哈!扔点泥巴给我最好了!滋润下我们这些小小草啊!O(∩_∩)O哈哈~希望各位站长给些针对性的意见建议,指导下我怎么修改关键词才好!本文由亿万商学院 http://tv.51yiwan.com/ 收集整理欢迎转载请注明,谢谢合作
1 F' B% h3 q7 z  W
0 P: e, X. ^2 n7 f$ z
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

    本版积分规则

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

    GMT+8, 2026-5-8 11:57 , Processed in 0.314060 second(s), 24 queries , Gzip On.

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

    Powered by Discuz! X3.5

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