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

[其他] PHP CURL函数详解

[复制链接]
qq41848501 发表于 2013-05-19 08:43:30 | 显示全部楼层 |阅读模式
  公司近期决定做一个SEO的宣传站来介绍公司自己的业务,同时也想借助百度的力量吸引一些客户,于是我们选择了些关键词。从选词到网站策划以及网站建设的每个步骤我们都很小心,我们做的每个事情都是想我们的网站列适合网站的蜘蛛的抓取习惯。网站的每个页面都采用DIV+CSS布局,网站的结构也不错,网址采用伪静态的方式更适合蜘蛛的抓取,网站的内容保持伪原创或原创。虽然做了这么多的工作,自认为每个工作都很到位,但是效果真的很打击人,网站内页的收录一直不是很理想,网站的首页快照也超是10天以上,真的很叫人伤心啊,做了这么多的网站都还可以,但是做自己网站的时候,竟然是这个结果,哎!结果不是很理想,这些是个人整理的一些资料分享一些。
& H! u* ^( I" V* X6 n- u1 ]7 A6 H! k2 N9 U! s3 g
  PHP CURL函数详解* w9 A1 W8 j# c; F; j6 m
+ i& L! [5 U6 x, V1 C  l( g  C
  PHP中的CURL函数库(Client URL Library Function)
0 r- G0 p$ Z' h3 ]# ?3 W9 c; ~5 U# w; \: r" h
  curl_close —关闭一个curl会话: o- T8 t" a. L  F  i  `
" p6 Y" O8 \( x' ]( J! i- K& f
  curl_copy_handle —复印一个curl连署资源的所有内容和参变量
" s4 A9 q+ G. r
! D" x# b! H  }6 w* Z5 S3 r; B  k  curl_errno —回返一个包含现时会话不对信息的数码编号
4 B$ X" p8 |& d6 Q! m+ |
( U8 s& ]/ y" _* Y$ I  curl_error —回返一个包含现时会话不对信息的字符串; b1 Q5 s# D( c& I) i
0 i7 `( C% {- X, d
  curl_exec —执行一个curl会话
5 b) h* p  W1 G+ x
: R4 Z: q1 \" `6 q1 H5 R  curl_getinfo —获取一个curl连署资源句柄的信息& ^; \% ^5 c# _2 T$ U
0 A7 {: X, I8 p- f6 F/ \
  curl_init —初始化一个curl会话2 C# C4 Q" i+ [! `* U

, D, c6 F+ r7 A8 ~" s* j. E  curl_multi_add_handle —向curl批办理会话中添加单独的curl句柄资源
: ?2 L6 p& s4 l' [9 i1 p' `6 u% i0 x3 I7 k2 l7 k8 V
  curl_multi_close —关闭一个批办理句柄资源% T/ V2 ~7 D  T4 v

4 d) I, @/ K9 X: p( V0 l3 L  curl_multi_exec —解析一个curl批办理句柄/ M+ l7 D' \- v" u5 K

2 L+ q( ~3 h3 V) U  curl_multi_getcontent —回返获取的输出的文本流$ d+ ~! I% l& _* N3 f# v. w, L4 T& L

! n" T* w/ l0 [! V  curl_multi_info_read —获取现时解析的curl的相关传输信息
3 ]. z# B5 S+ L' e1 M- O$ A/ d4 ]% `6 C3 y; e# s
  curl_multi_init —初始化一个curl批办理句柄资源
7 R3 I- ^* u* C5 |5 D* g  c* O. S% N) A+ h8 R
  curl_multi_remove_handle —移除curl批办理句柄资源中的某个句柄资源
0 @- z/ A; I# @  f' K- O$ n+ B+ p
* F" w& Q% W! s( m  curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"  n+ e! W2 h+ C4 D1 G7 [

4 E* }9 e$ V& }, ?1 x  curl_setopt_array —以数组的仪式为一个curl设置会话参变量
7 Y9 ^9 p+ P7 Q& c- t' D! p
# X! P6 a: G5 R" Y4 _  curl_setopt —为一个curl设置会话参变量curl_version —获取curl相关的版本信息
5 }8 e- Y2 {9 t2 D( I/ g4 e. S( _3 N: @$ ?# ]: s7 S1 `0 W, X
  curl_init()函数的效用初始化一个curl会话,curl_init()函数唯一的一个参变量是可选的,表达一个url地址。
+ w0 S# H+ o- f5 m( i2 V
% E- k5 i3 G: `- K: ?  curl_exec()函数的效用是执行一个curl会话,唯一的参变量是curl_init()函数回返的句柄。curl_close()函数的效用是关闭一个curl会话,唯一的参变量是curl_init()函数回返的句柄。
6 q% b  F2 Z; B) \9 \& W# x, K# |
( R" {0 p8 \) s4 I  curl_version()函数的效用是获取curl相关的版本信息,curl_version()函数有一个参变量,不明白是做啥子的$ j7 b7 k4 A, F$ d
8 |" P/ u4 A) p. A
  curl_getinfo()函数的效用是获取一个curl连署资源句柄的信息,curl_getinfo()函数有两个参变量,第一个参变量是curl的资源句柄,第二个参变量是下边一点恒量:8 ~  D0 E# R+ [" ]" D
$ i& Z& R7 P) ]5 j) ]- R
  可选的恒量涵盖:
  H( f2 ?8 W$ h: p7 a. H) y5 [' p6 o' w7 N2 y/ W  \8 Z
  CURLINFO_EFFECTIVE_URL最终一个管用的url地址
8 }4 B4 a0 f# V. E; z) f8 H, _, k) y4 \0 q" w
  CURLINFO_HTTP_CODE最终一个收到的HTTP代码
2 b8 _- U, u9 _2 h9 f8 G4 }2 G& O  }9 S6 u. h# s) b; h: E: z
  CURLINFO_FILETIME长程获取文档的时间,假如无法获取,则回返值为“-1”% L' u4 p/ O$ B: _
, U. U& j' Y% f0 h8 K
  CURLINFO_TOTAL_TIME最终一次传输所耗费的时间0 s7 z. ~" X& q+ R8 \
* X$ M5 X$ x- r
  CURLINFO_NAMELOOKUP_TIME名称解析所耗费的时间# u! O- [- Q& N0 \( V9 S' D1 f

6 r- [2 Z+ ~$ n  l& h: ?% A" M  CURLINFO_CONNECT_TIME开办连署所耗费的时间% J# a1 m5 K2 b6 f! @) N! b* P% g
2 n) d  b# Z* @6 K8 o) a# w/ R# R5 S
  CURLINFO_PRETRANSFER_TIME从开办连署到准备传输所使役的时间
/ i$ [% m* h9 U8 Y
4 ?9 c/ G  d1 u  Z$ j1 F  CURLINFO_STARTTRANSFER_TIME从开办连署到传输起始所使役的时间
% Z, F9 i+ o4 F7 N& E+ q! q* v
0 L. W* g3 ]2 X: c- W  CURLINFO_REDIRECT_TIME在事务传输起始前重定向所使役的时间
9 Y: K) J3 g5 s5 R3 q
  c5 b) h' r/ j  CURLINFO_SIZE_UPLOAD上传数据量的总值
; B" I6 I7 R7 z/ ^/ h3 m& F
3 T  ?1 w3 N$ _9 f) u  CURLINFO_SIZE_DOWNLOAD下载数据量的总值% {, J4 g' v* t4 O

( b4 r) J, w0 c: a  CURLINFO_SPEED_DOWNLOAD均等下载速度
$ R3 ?. g( u8 {8 C% c, c% l8 A; G2 v* ]+ o, {& R
  CURLINFO_SPEED_UPLOAD均等上传速度' ^" N: H+ k& b3 I7 W- o' U7 z) y5 ]
( L$ J$ w5 U0 l/ g  F$ E# l- G
  CURLINFO_HEADER_SIZEheader局部的体积9 Z2 |( X; r: F! R8 R
  K3 W# N. n7 w3 {) O" l* j
  CURLINFO_HEADER_OUT发送烦请的字符串
+ y& B1 d2 r/ d6 l! J- @7 K& o9 |; S4 A" R9 ]3 j. j& q- Z
  CURLINFO_REQUEST_SIZE在HTTP烦请中有问题的烦请的体积2 V5 z% J2 v- V6 P, h

: s8 _0 {  Q" B3 B, Y& A; E  CURLINFO_SSL_VERIFYRESULTResult of SSL certification verification requested by setting CURLOPT_SSL_VERIFYPEER
: n8 {: x4 ?8 Q/ O$ S
8 y! G, Q7 {+ ]; J3 V) Z* Y  CURLINFO_CONTENT_LENGTH_DOWNLOAD从Content-Length: field中读取的下载内容长度
, Z: J7 @; G, A% q8 U  E0 }: T4 X! W
  CURLINFO_CONTENT_LENGTH_UPLOAD上传内容体积的申说
; w; g$ T5 L7 O9 S) i2 \# o6 F" l# I0 q$ g2 R# X3 t" [
  CURLINFO_CONTENT_TYPE下载内容的“Content-type”值,门里出身表达服务器没有发送管用的“Content-Type: header”" R8 j+ e7 {6 ^0 ~8 |
  G. l( |4 N! P
  curl_setopt()函数的效用是为一个curl设置会话参变量。curl_setopt_array()函数的效用是以数组的仪式为一个curl设置会话参变量。
1 }1 K4 i0 n- U) [) H# Z! H* i
2 i$ Y/ ~9 J( }) |! t/ m  \'
, T8 p* B! a2 D. G$ S# l0 O  y1 z, I
  CURLOPT_HEADER => false
7 Z6 ]- _1 s) v3 r
# a0 ?$ l$ t1 b. x* |  M& q- h  );0 N# c1 B8 m# d3 G
% h  L& P' @7 G& Z3 s7 [
  curl_setopt_array($ch, $options);
2 d4 y8 ?/ z* A8 _# ~
0 h/ e# w/ r7 L+ L7 o5 I  curl_exec($ch);. [. h' z9 o$ Y* g- }% a
( G4 A- x- F/ C; S
  curl_close($ch);
( i% f! y9 g* Y2 G  S4 X
- ~( m% s2 A; [; O( w  fclose($fp);/ D- c! q+ ~& ~

$ [3 b+ W- J3 B6 U; p  ?>可设置的参变量有:
5 M( ]; c  d3 [6 D4 j# s1 C4 i( e/ T
  CURLOPT_AUTOREFERER半自动设置header中的referer信息* {6 J3 Y; w9 W$ M+ S% p

- o2 ~7 \3 m) d  CURLOPT_BINARYTRANSFER在启用CURLOPT_RETURNTRANSFER时分将获取数据回返5 u! w- d5 b  s2 R
. f$ W  l# z1 k) v, Q
  CURLOPT_COOKIESESSION启用时curl会仅只传送一个session cookie,疏忽其它的cookie,默认状态下curl会将所有的cookie回返给服务端。session cookie是指那些用来判断服务器端的session是否管用而存在的cookie。
2 X, W( _- b- q6 `( {; w, i  I5 _: R
  CURLOPT_CRLF启用时将Unix的换行符转换成回车换行符。
1 [! k" |; W7 G( O( R' ?
) V- Z1 ^- }0 T, ]5 M+ T  CURLOPT_DNS_USE_GLOBAL_CACHE启用时会启用一个全局的DNS缓存,此项为线程安全的,而且默认为true。1 P+ \  h8 f$ P  m* k/ h- F3 c

4 R8 Q  |+ L& w, N6 j& y, }; s3 K  CURLOPT_FAIL0NERROR预示HTTP面貌码,默认行径是疏忽编号小于等于400的HTTP信息7 @4 M) `# Z4 U
5 i$ F; [: X# q# h0 f/ \- ~$ R
  CURLOPT_FILETIME启用时会尝试修改长程文档中的信息。结果信息会经过curl_getinfo()函数的CURLINFO_FILETIME选项回返。
, I) M% [, U! L4 @: f& ]( d9 P; H
  CURLOPT_FOLLOWLOCATION启用时会将服务器服务器回返的“Location:”放在header中递归的回返给服务器,使役CURLOPT_MAXREDIRS可以框定递归回返的数量。
$ ]1 X: {. a  {" L) f# r$ u/ t5 X* ?: ^' h3 g! e4 K# v
  CURLOPT_FORBID_REUSE在完成交互之后强制断裂连署,不得重用。
' F4 {7 y- d* j3 F8 d5 ~+ [0 y# W( W9 M
  CURLOPT_FRESH_CONNECT强制获取一个新的连署,替代缓存中的连署。
3 j% q/ ?7 h; G! }/ \% ]8 X' G  w3 ?" M
  CURLOPT_FTP_USE_EPRT+ E" t4 E4 e0 `6 z/ J! O7 @6 X

* W. r! G& H3 _9 J  k  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.
5 r3 ^4 N& D* k. R# B% ]
1 k2 t8 k. ]3 A; ~9 w3 Y  CURLOPT_FTP_USE_EPSVTRUE to first try an EPSV command for FTP transfers before reverting back to PASV. Set to FALSE to disable EPSV.# `5 v- {: O6 y6 f& d

# \; i, a4 @- S% n; e  CURLOPT_FTPAPPENDTRUE to append to the remote file instead of overwriting it.- R8 G7 U. l/ C. M

2 F: e) \0 t- z% ^& H: x  CURLOPT_FTPASCIIAn alias of CURLOPT_TRANSFERTEXT. Use that instead.
* {' q" I' w4 Y2 x" s5 f7 Z3 j, ~$ q
  CURLOPT_FTPLISTONLYTRUE to only list the names of an FTP directory.# u% w7 n8 o& e' L1 R
9 I) m' p7 Q0 g6 u& [
  CURLOPT_HEADER启用时会将头文件的信息作为数据流输出。
5 u9 t( b# H" s" j" V) f9 L5 N4 x3 V& C% Q4 ~
  CURLOPT_HTTPGET启用时会设置HTTP的method为GET,因为GET是默认是,所以只在被修改的况下使役。9 v' u# L$ X) A
9 i% f) x( \8 K3 R  c$ ]7 t9 T
  CURLOPT_HTTPPROXYTUNNEL启用时会经过HTTP摄理来传输。
' f& X7 Q$ H  ?) O2 C
" E0 Z: N  n# G# w; m  CURLOPT_MUTE讲curl函数中所有修改过的参变量光复默认值。
, |; Q& Y6 S) T- J# P* f' \3 s% i) f, o! d3 E* m* V3 ?& n! e
  CURLOPT_NETRC在连署开办之后,过访~/rc文件获取用户名和密码信息连署长程站点。6 D7 h3 W- v0 L

4 Q" H$ n4 k2 T: d/ W  CURLOPT_NOBODY启用时将不对HTML中的body局部施行输出。9 m& C2 x( [: Q" n

; s  |! F$ R$ |4 W  CURLOPT_NOPROGRESS启用时关闭curl传输的进度条,此项的默认设置为true% O3 \0 T7 h3 v3 r+ N: ^& M

3 M1 R, T% K5 k( X  CURLOPT_NOSIGNAL启用时疏忽所有的curl传送给php施行的信号。在SAPI多线程传输时此项被默认敞开。- [" ?4 D- S6 Q9 V; u' r
8 t( I; u& d( y
  CURLOPT_POST启用时会发送一个常理的POST烦请,类型为:application/x-www-form-urlencoded,就像表单提交的同样。! G; l& ]5 M9 }( C
3 V6 y; V, N0 Y4 K/ A+ z
  CURLOPT_PUT启用时准许HTTP发送文件,务必同时设置CURLOPT_INFILE和CURLOPT_INFILESIZE
. h% n& K4 {) t& D, e) g8 i; M$ Z5 y# ^1 }
  CURLOPT_RETURNTRANSFER讲curl_exec()获取的信息以文件流的仪式回返,而不是直接输出。7 U# ^& f1 {. m  y8 f/ T: a
) [: ^( @1 Q: @& Q6 C
  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.% v, x$ N, n( X- c* ]& q( g

" R, h- t8 y) U  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$ F+ k3 L% `3 h2 B' b1 z1 d! q
, F- m1 M. g1 u  CURLOPT_UNRESTRICTED_AUTH在使役CURLOPT_FOLLOWLOCATION萌生的header中的多个locations中持续追加用户名和密码信息,纵然域名已发生变更。
) ?  g7 y5 l" h1 Y" X, u) J, x) o1 v9 k
  CURLOPT_UPLOAD启用时准许文件传输
/ u5 }; w& V' U  v" ^: ~4 O. j/ a3 Y7 ?0 X
  CURLOPT_VERBOSE启用时会汇报所有的信息,储存在STDERR或指定的CURLOPT_STDERR中0 j' D' b1 T: i' Y5 K- _- a
0 r/ v$ s- p: A2 n5 A, Q3 R3 m
  CURLOPT_BUFFERSIZE每每获取的数据中读入缓存的体积,这个值每每都会被充塞。0 F8 M/ S' t. j

$ L8 B  L. X! g& b/ @! t  以上就是这近2个月的建站分享,给刚刚步入小小草根做个参考!当然这只是我个人的看法、经验,硬邦邦的大草不要扔刀给我哈!扔点泥巴给我最好了!滋润下我们这些小小草啊!O(∩_∩)O哈哈~希望各位站长给些针对性的意见建议,指导下我怎么修改关键词才好!本文由亿万商学院 http://tv.51yiwan.com/ 收集整理欢迎转载请注明,谢谢合作2 k( ^; I, B- p- |7 X! a
2 j' r# Y0 _- \
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

    本版积分规则

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

    GMT+8, 2026-5-8 13:26 , Processed in 0.231467 second(s), 24 queries , Gzip On.

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

    Powered by Discuz! X3.5

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