向右转(尽量每天更新…)

2008-05-23

Google架构

Filed under: 生活娱乐 — admin @ 6:49 pm

作者:Paul Wang

一个朋友Paul是以为资深的软件工程师,他希望能够深入浅出的聊聊Google的工作

原理。特在这里发表其文章。希望读者能够喜欢。

有人说,Google的技术太NB了,我一辈子都学不会,那么我告诉你,阿呸!

有人说,Google肯定和美国政府有关系,是特许的,否则怎么会统治美国的搜索界,进

而又统治了全世界?那么我告诉你,阿呸!

有人说,Google的技术属于人工智能领域,高处不胜寒,是高度机密的,别人无法得知

,那么我告诉你,阿呸!

有人说,Google搜索引擎使用了极其昂贵的硬件设备,超级机器,别人想模仿都不成,

那么我告诉你,阿呸!

有人说,Google太油菜了,他们有无数的创新和专利,全世界第一无二,那么我告诉你

,阿呸!

下面分别掰吃掰吃这5个阿呸,作为开篇来让你进入Google的世界,剥掉google性感华丽

的外衣,让他一丝不挂,让他彻底的裸体!!!

老二永远为老大服务这个俗语大家肯定能看懂,我就不解释了。

不懂这个俗话的也不要紧,他的意思就是说,但凡你要成功的做一件事情,你必须先要

有正确恰当的动机,动机决定一切。

进而要有功能化的东西,没有功能,无论你怎么口吐莲花,怎么滔滔不绝,也是一水中

望月,空中楼阁。。
google 也不例外。

Google老大的故事被新闻界吵得神乎其神,也就是一忽悠。在这些炒作中,最煽情的莫

过于布林老大的一番独白:我小时候生在俄罗斯,家里穷,但我爱学习,可是图书馆太

贵,我去不起。于是我就梦想,如果有一天,世界上所有爱学习的人都能免费去图书管

,那么会多好阿?

……

怎么样,这故事听起来娓娓动听,颇为煽情把?

但实际呢?实际上又是如何呢?你知道,这个世界就是这德性,NB的人在那里夸夸其谈

,其他大多数的傻人在那里留着口水点头称是。

实际却是,Google开始起家,瞄准的方向却是广告,在线广告,这是能挣大钱的东西,

这和布林小时都的悲惨遭遇毫不相关。

如何为在线广告提供一个大量金钱的出口,就成了布林的动机 - 也是google的动机。

并不像媒体宣传的那样,google的几个脾气十分古怪的小子们聚在一起搞研究。正相反

,他们借钱租用了Yahoo的搜索服务。

和中国软件业的现状类似,他们对Yahoo做了反向工程 - 意思就是破解,了解了Yahoo是

如何工作的,细节我后面会讲到 - 半年后他们说,Yahoo太烂,退了。

可怜Yahoo,就像当年IBM支持微软一样,不明不白的就培养出了一个白眼狼。

这样,Google就有了自己的功能:yahoo + 斯坦福大学的几个研究报告。

老二,老大都到位了,剩下的就是技术人员开始动手了。

你果真认为人类是世界上最成功的动物吗?真的吗?

如果你说是,那么很不幸,你没文化:低头看看地上的蚂蚁,它们无处不在,和人类一

样成功;抬头看看嗡嗡叫的蚊子 - 如果你能 - 它们也和你一样成功!!

你杀不完,煮不烂,击不溃它们!永远不能。

速度不快的坚持不懈的蠕动、迁移和尽心尽力的繁殖,才是王道,也是蚂蚁们和蚊子们

大肆繁荣的哲学原理。

布林如何不懂得这个生物界最基本的道理?

于是,Google架构的第一个特色就是:蠕动,迁移,和繁殖!

顺便说一句,我一定用最通俗的语言讲Google的架构,放心,保你高小文化也能看懂。

大家都知道老鹰眼神好,可你研究过老鹰是如何抓兔子的吗?

老鹰首先起飞,选一个区域,比如华北平原;盘旋一把,来到了十三陵水库边儿;选择

一个树木不茂盛之地,便于观察。于是开始漫长的盘旋和等待,等待兔子的出现,一爪

击之,吃掉!

老鹰抓兔子的办法和启示就是当年所谓不可一世的斯坦福大学的导致google产生核心思

想的论文的基本思想。

当然,Google没有老鹰那么的雄壮,low class的多得多,他们只能蠕动。

和老鹰起飞的逻辑一致,Google走的是地下路线,土行孙的路数,但也是先监视Web的动

作。

在讲web之前,我得先插一句,你们要知道,这世界可不是只有一种网络,Web,事实上

Web是最后的网络。在web之前,有电话网络、收音机网络、电报网络、电视网络。。等

等各种网络,他们和 Web完全不同。布林实际上最早琢磨的是如何监视和利用电视网络

,这样的话,google可以很容易的和营业额很差的一些服务供应商联营,实现盈利的目

的。

可惜,电视业的老大们,像著名的CNN之类的,不好使,看不到google的前景。于是布林

就断了此念头,专心于web。

web很简单,很容易监视。因为Web是通过地址本来实现的。

比如零零发家,中国北京市东城区鼓楼东大街xxxx号xxx楼。这就是一个确切的地址。

web也是一样编码,也有这样的地址,只不过它的写法不同,变成了64.233.189.99。(

这是google的地址)。

总之,我可以知道所有的地址-这不过是个数字游戏而已-,那么监视其内容也就顺理成

章了,对把?

但是,出乎布林意料的是,他碰到了前所未有的法律问题:我家的地址并不受法律保护

,但是我家的东西受保护,你不可以监视!!!!!!

的确,假如你家安了摄像机,世界上所有人都能看到你家的一举一动,你会不会很恼火

呢?

于是这些人开始反对google,理由只有一个:

我有反对被搜索被检测的权利!

这一下子,布林的google就处于了绝境,因为你违背了人类的隐私权!!

怎么办?

布林急得嘴角起跑,脚底生疮,团团措手,而毫无章法。难道说,google还没有起飞,

就夭折了吗???

布林琢磨来琢磨去,在纸上写了几条:

1。法律神圣不可侵犯。

在美国这地儿,你想和法律玩儿,简直是在找死,除非你有辛普森那样的大运,和金钱

- 即使你有,你也不能保证一定能赢。

2。搜集的信息源先用google自己的。

这就是Google网络图书馆的概念,goole和几所大学签了协议,建造这些电子图书馆。那

么我搜罗的信息都是我自己图书馆里里的,法律许可,你管不着。想必大家都在你工作

中、生活中使用了很多很多了。不在赘述。

3。每当搜索我自己的信息时,愿意发布自己信息的,把你的名字发布出去。

就凭着这三条,google从无到有,发展了起来。

随着时间的推移,服务供应商渐渐体会到在线搜索的好处,也越来越多地渐入到了发布

了行列。与此同时,服务也渐渐达成了不成文的共识:在DNS(就是地址本儿系统)许可

的范围之内的信息,属于可以搜索的合法的内容之列。

实际上,关于这个内容,就连最严格的塞班斯法案也并没能清楚地描述,理由很简单,

美国是一个强调民主的国家,个人、公司的利益高于一切,所以没有相关的硬性指示,

由各地区自行规定。

但是,在DNS系统之内的信息,比如一个不小心暴露的link,也能让google的引擎去探测

,钻探,最终让你的信息变得可以搜索。

怎么办?

google答应服务商,在NATP的概念上,google不涉及,不探测,不公布,不泄露。

NATP是个嘛东西呢?

我前面说了,你家是有公共地址的,比如零零发家的地址。但是,零零发家的厨房和客

厅是没有公共地址的,换句话说,你不会在地址本上找到:北京市。xxxxx。。。号厨房

;北京市。xxxxx。。。号客厅;这样的地址。

显而易见,厨房和客厅是私有的。这叫内网:内网无处不在。你只要运行一下你机器的

Ipconfig,看看你的IP地址是不是192.168。。。。。,如果是,那你就是处于内网,相

当于零零发家的厨房和客厅,外人看不到。

但有时候FanFan想向外人显摆她新买的新鞋,于是她就向全世界公开说,欢迎看我的新

鞋,请访问北京市。xxxxx。。。号客厅。

OK,这时候,内网的内容就临时性的公开到了外部,这叫NAT(网络地址转换),一旦

Fanfan显摆完了,她就关闭了这个临时公开的的地址。也就是说,北京市。xxxxx。。。

号客厅不存在了。

听明白了吗?这就是NATs技术的核心。。。我发现好多人NB烘烘的和我说,我懂P2P,我

懂NATS,。。这算个狗屁技术??!!??!。。不晓得这些年轻人在NB在炫耀什么?

!?!

话说回来,google答应服务商不去碰及所有有关内网的信息。

说实话,这也不是google多么的圣洁和高尚,因为内网信息的临时性,无法让google得

到持续一定的数据来源,这才是杀手锏。

就这样,在布林半情愿、不情愿的情况下,google建立了起来。

写道这里,各位可能会问:

布林哪儿来的钱建立他的图书馆的呢??一个穷学生怎么能有那么多钱呢???

我也想建图书馆,可是我没钱,咋办呢?

是阿,到底,布林怎么有了三头六臂,搞到了钱让他启动google呢?

难道是贩毒不成?请听下回分解。

在法律上合法以后,Google就开始了技术设计。

这地儿技术人员太少,所以我不做更深入的探讨,只描述个大概。

前面说了,有个WEB的监视设备,那么下一步就是对web的内容进行剖析,分解,和分布

在设定web剖析的策略之前,我们需要明确我们要剖析什么?

比如,一段Video,其中有萨朗私通不穿内裤接受询问的镜头,我想看,能找到不?

对不起,google的回答是:不能。

ok。我是一个音乐迷,我无意中听了一歌,唱到,“。。。欺骗之后的疲惫。。。”,

别的嘛也不知,那么我想找到这首歌,行吗?

对不起,google的回答是:不能。但是,google可以让你搜索歌词库,然后找到歌名。

这就明白了,google的搜索是基于文本的,而不是流媒体–就是指音频、视频等。

其实,流媒体搜索是很复杂的事情,其复杂性不在技术上,而在于商业模式,无法统一

,也无法实施。至于技术方面,早就风行世界的mpeg-7,mpeg-21标准,很容易就可以保

证流媒体的可搜索性。

按布林的说法,当时google如此决定完全是因为成本的原因:他不可能有钱做流媒体搜

索。

分析完文本之后,google将数据结果打包分类分布,他们用术语数据Barrel来形容,就

是数据筒,每个桶里都放着打包分类的数据。以加快搜索相应速度。

除此之外,完全依赖于操作系统本身自带的输入输出系统,无法做到高效率,于是

Google又开发了基于磁盘数据影射的搜索方式,绕过操作系统,直接搜索。这也并不困

难,无法就是缓冲磁盘阵列,然后进行代码的模式匹配-就好比你拿个筛子,合适尺寸的

走,不合适的留。

为了相应更高端的搜索要求,他们又做了仿射-也就是说,可以通过不同的途径找到同一

的内容。这个更是简单,如果你学过比较好的数学的话。

在这些基本的架构思想敲定后,google开始了服务器的布置,并实现了冗余部署。这个

很重要,冗余是保证效率的关键,其目的很简单:让最需要的人在最快的时间内存取最

需要的数据。

就这么简单。

为了管理冗余和分布式部署,google开发了全球的文件系统,每一个节点可以mount,也

可以卸掉ummont-就好比是需要的时候上车,不需要的时候下车。

这就是google的生蛆原理。不动声色的监视、蠕动、繁殖和分布。

技术上OK就可以了?就可以赚钱了?

可笑!记住,这世界,想赚钱,你得先有钱,所有那些记者们写的如何白手起家的故事

都是编排给穷人看的,好让他们有了生活的希望。

要玩钱了,这时候,拉姆·西里亚姆就出马了,这个天才的不折不扣的王八蛋该演戏了

于是,演出正式开始了。

2008-05-22

今天你要了吗?

Filed under: 生活娱乐 — admin @ 1:07 am

国人太积极了.近百亿的捐款,也很难不出黑洞.然而,在捐款不透明的今天.黑洞是很难被发现一样.如果在一个漆黑的房子到一个耗子泂,还是很困难的.所以..
中国红十字总会说:我需要…

中国儿童少年基金会说:我需要…

教育部说:我需要…

政府说,我的8亿是不是不用给了吧.有百亿了,我那点钱不值啥的.

2008-05-07

使用php-js-ext在PHP内解析javascript脚本

Filed under: 转贴 — admin @ 10:31 am

当你在因个人兴趣爱好而开发PHP程序时,面对可以达到你的目的却长达千行以上的js脚本,你有精力去用php重写它么?想用PHP模拟用户行为么?但却 遇到js泛滥的站点……一个不为人所知的php扩展项目可以满足这些需求,这个扩展的目的就是在php内解释javascript。

项目主页 http://aurore.net/projects/php-js/

php-js-ext是mozilla javascript解释器和php之间的一座桥梁,因此我们除了需要下载最后版本为0.1.2的php-js-ext,还需要下载最新版本为1.7.0的mozilla
js,链接如下(php-js-ext 0.1.2发布时是配合js-1.5工作,但经我测试,也可以配合js-1.7工作)

CODE:

wget http://aurore.net/projects/php-js/php-js-ext-0.1.2.tar.bz2
wget http://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz
系统是CentOS 4.5

1.安装mozilla js

解开js-1.7.0.tar.gz

CODE:

tar zxvf js-1.7.0.tar.gz
cd js/src
开始编译(如不能完成编译见最后说明)

CODE:

make -f Makefile.ref

拷贝libjs.so到/usr/lib

CODE:

cp Linux_All_DBG.OBJ/libjs.so /usr/lib
ldconfig
拷贝头文件到/usr/include

CODE:

cp jsapi.h jscompat.h jslong.h jsosdep.h jsotypes.h jspubtd.h jstypes.h jsproto.tbl jsconfig.h Linux_All_DBG.OBJ/jsautocfg.h /usr/include/

自此mozilla js的安装工作就完成了,下面开始进行php-js-ext的安装

2.安装php-js-ext

解开php-js-ext-0.1.2.tar.bz2

CODE:

tar jxvf php-js-ext-0.1.2.tar.bz2
cd php-js-ext-0.1.2
创造环境并设定扩展版本(如有一个以上的php存在,需要输入phpize的完整路径)

CODE:

/path/phpize

配置并编译安装(如有一个以上的php存在或configure无法找到php的位置,需要在configure的时候指定-with-php-config=/path/php-config)

CODE:

./configure
make && make install
如果一切无误,js.so已经在你的php的lib目录

最后,修改你的php.ini,在相应的位置加入extension=js.so,并确认extension_dir的设定正确。

输出一个phpinfo的结果,以查看js.so是否被正确加载和可能的错误信息。
如果一切无误的话,我们就可以开始使用这个功能了。

这里附上官方网站的使用说明:

QUOTE:

A simple ./configure; make; make install should do the trick. Make sure to add an extension=js.so line to your php.ini/php.d. Note: you need to install libjs first. If you’re using a Redhat-esque system, you can use the SRPM provided above, else, use the TBZ.

Then, just use js_eval to evaluate your JavaScript. js_eval returns the value returned by the JavaScript interpreter to PHP.

For example:

js_eval(”var a = 123;”);
js_eval(”var b = 456;”);

$c = js_eval(”[a, b];”);
echo “a is “.$c[0].”\n”;
echo “b is “.$c[1].”\n”;

js_eval(”var sum = function(x, y) { return x + y; }”);

$d = js_eval(”sum(a, b);”);
echo “The sum of a and b is “.$d.”\n”;

Would produce:

a is 123
b is 456
The sum of a and b is 579

js_eval takes an optional boolean argument, assoc, which returns objects as associative arrays instead of PHP objects.

The php-js execution environment provides two built-in JavaScript system functions:

* print
* gc

print outputs its argument to the php output stream.

gc forces garbage collection within the JavaScript environment.
(非 Redhat的linux发行版可能会在mozilla js的编译过程中产生错误,是因为连接器和内核已经不对a.out提供支持,我们需要用gcc来生成一个共享库而不是ld了。打开 js/src/config/Linux_All.mk,将第50行的 MKSHLIB = $(LD) -shared $(XMKSHLIBOPTS) 更改为 MKSHLIB = $(CC) -shared $(XMKSHLIBOPTS) ,make -f Makefile.ref clean后再次尝试编译。)

来源:SunGod

2008-05-06

当今社会

Filed under: 思想情感 — admin @ 5:03 pm

当今四大傻人:恋爱不成上吊的,没病没灾吃药的,合同签成无效的,看着手机傻笑的。
* 现今四大土:手机戴套,传呼戴铐,男人穿背心,女人戴胸罩。
* 四大惹不起:喝酒不吃菜,光膀扎领带,乳房露在外,骑自行车80迈。
* 人生四大悲:久旱逢甘雨,一滴;他乡遇故知,债主;洞房花烛夜,隔壁;金榜提名时,重名。
* 四大腻歪:请客没人到,BB机没人叫,媳妇不让闹,要闹还得戴上套。
* 四大虚:老板的肾,某官的稿,小姐的眼泪,统计局的表。
* 四大闲:大款的老婆,领导的钱,下岗职工,调研员。
* 四知:到了北京才知道官小,到了上海才知道楼小,到了深圳才知道钱少,到了包厢才知道老婆老。
* 四讲:上午讲正气,中午讲义气,下午讲手气,晚上讲力气。
* 四大“不能说”:牛市被套,小蜜被泡,赃款被盗,伟哥失效。
* 男人四货:二十岁的男人是期货,三十岁的男人是抢手货,四十岁的男人是现货,五十岁的男人是跳楼货。
* 男人四怕:怕小姐有病,怕情人怀孕,怕群众写信,怕老婆自尽。
* 男人四花:一等男人家外有花,二等男人家外找花,三等男人四处乱抓,四等男人下班回家。
* 男人四“睡”:乞丐睡觉是地睡,和老婆睡觉是纳税,和情人睡觉是偷税,和小姨子睡觉是增值睡。
*男人四鬼:晚上下班回家是穷鬼,晚上9点回家是酒鬼,晚上12点回家是色鬼,凌晨4点回家是赌鬼。
* 男人四大傻:下班就回家,挣钱自己花,吃饭点龙虾,给小姐留电话。
* 男人四大年龄:二十是奔腾,三十是微软,四十是松下,五十是联想。
* 天下哥们四铁:一铁是一起同过窗,二铁是一起扛过枪,三铁是一起嫖过娼,四铁是一起分过赃。
* 男人四大希望:家里有个做饭的,办公室有个好看的,身边有个犯贱的,远方有个想念的。
* 男人四大无奈:陪老婆乏味,找小姐太贵,搞情人太累,不结婚最实惠。
* 女人四大理想:男人头壳都坏掉,每天给我送钞票,还要排队任我挑,自己一直不会老。
* 四等美女:一等美女漂洋过海,二等美女深圳珠海,三等美女北京上海,四等美女等待下海。
* 四恋的样子:初恋就像一见钟情,热恋就像以身相许,留恋就像百依百顺,失恋就像你东我西。
* 四项基本守则:喝酒基本靠送,抽烟基本靠供,工资基本不动,老婆基本不用。

2008-05-05

curl_setopt函数相关参数介绍

Filed under: IT — admin @ 6:51 pm

curl_setopt

(PHP 4 >= 4.0.2)

curl_setopt — 为CURL调用设置一个选项

描述

bool curl_setopt (int ch, string option, mixed value)

curl_setopt() 函数将为一个CURL会话设置选项。option参数是你想要的设置,value是这个选项给定的值。下列选项的值将被作为长整形使用(在option参数中指定):

  • CURLOPT_INFILESIZE: 当你上传一个文件到远程站点,这个选项告诉PHP你上传文件的大小。
  • CURLOPT_VERBOSE: 如果你想CURL报告每一件意外的事情,设置这个选项为一个非零值。
  • CURLOPT_HEADER: 如果你想把一个头包含在输出中,设置这个选项为一个非零值。
  • CURLOPT_NOPROGRESS: 如果你不会PHP为CURL传输显示一个进程条,设置这个选项为一个非零值。

    注意: PHP自动设置这个选项为非零值,你应该仅仅为了调试的目的来改变这个选项。

  • CURLOPT_NOBODY: 如果你不想在输出中包含body部分,设置这个选项为一个非零值。
  • CURLOPT_FAILONERROR: 如果你想让PHP在发生错误(HTTP代码返回大于等于300)时,不显示,设置这个选项为一人非零值。默认行为是返回一个正常页,忽略代码。
  • CURLOPT_UPLOAD: 如果你想让PHP为上传做准备,设置这个选项为一个非零值。
  • CURLOPT_POST: 如果你想PHP去做一个正规的HTTP POST,设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。
  • CURLOPT_FTPLISTONLY: 设置这个选项为非零值,PHP将列出FTP的目录名列表。
  • CURLOPT_FTPAPPEND: 设置这个选项为一个非零值,PHP将应用远程文件代替覆盖它。
  • CURLOPT_NETRC: 设置这个选项为一个非零值,PHP将在你的 ~./netrc 文件中查找你要建立连接的远程站点的用户名及密码。
  • CURLOPT_FOLLOWLOCATION: 设置这个选项为一个非零值(象 “Location: “)的头,服务器会把它当做HTTP头的一部分发送(注意这是递归的,PHP将发送形如 “Location: “的头)。
  • CURLOPT_PUT: 设置这个选项为一个非零值去用HTTP上传一个文件。要上传这个文件必须设置CURLOPT_INFILE和CURLOPT_INFILESIZE选项.
  • CURLOPT_MUTE: 设置这个选项为一个非零值,PHP对于CURL函数将完全沉默。
  • CURLOPT_TIMEOUT: 设置一个长整形数,作为最大延续多少秒。
  • CURLOPT_LOW_SPEED_LIMIT: 设置一个长整形数,控制传送多少字节。
  • CURLOPT_LOW_SPEED_TIME: 设置一个长整形数,控制多少秒传送CURLOPT_LOW_SPEED_LIMIT规定的字节数。
  • CURLOPT_RESUME_FROM: 传递一个包含字节偏移地址的长整形参数,(你想转移到的开始表单)。
  • CURLOPT_SSLVERSION: 传递一个包含SSL版本的长参数。默认PHP将被它自己努力的确定,在更多的安全中你必须手工设置。
  • CURLOPT_TIMECONDITION: 传递一个长参数,指定怎么处理CURLOPT_TIMEVALUE参数。你可以设置这个参数为TIMECOND_IFMODSINCE 或 TIMECOND_ISUNMODSINCE。这仅用于HTTP。
  • CURLOPT_TIMEVALUE: 传递一个从1970-1-1开始到现在的秒数。这个时间将被CURLOPT_TIMEVALUE选项作为指定值使用,或被默认TIMECOND_IFMODSINCE使用。

下列选项的值将被作为字符串:

  • CURLOPT_URL: 这是你想用PHP取回的URL地址。你也可以在用curl_init() 函数初始化时设置这个选项。
  • CURLOPT_USERPWD: 传递一个形如[username]:[password]风格的字符串,作用PHP去连接。
  • CURLOPT_PROXYUSERPWD: 传递一个形如[username]:[password] 格式的字符串去连接HTTP代理。
  • CURLOPT_RANGE: 传递一个你想指定的范围。它应该是”X-Y”格式,X或Y是被除外的。HTTP传送同样支持几个间隔,用逗句来分隔(X-Y,N-M)。
  • CURLOPT_POSTFIELDS: 传递一个作为HTTP “POST”操作的所有数据的字符串。
  • CURLOPT_REFERER: 在HTTP请求中包含一个”referer”头的字符串。
  • CURLOPT_USERAGENT: 在HTTP请求中包含一个”user-agent”头的字符串。
  • CURLOPT_FTPPORT: 传递一个包含被ftp “POST”指令使用的IP地址。这个POST指令告诉远程服务器去连接我们指定的IP地址。 这个字符串可以是一个IP地址,一个主机名,一个网络界面名(在UNIX下),或是‘-’(使用系统默认IP地址)。
  • CURLOPT_COOKIE: 传递一个包含HTTP cookie的头连接。
  • CURLOPT_SSLCERT: 传递一个包含PEM格式证书的字符串。
  • CURLOPT_SSLCERTPASSWD: 传递一个包含使用CURLOPT_SSLCERT证书必需的密码。
  • CURLOPT_COOKIEFILE: 传递一个包含cookie数据的文件的名字的字符串。这个cookie文件可以是Netscape格式,或是堆存在文件中的HTTP风格的头。
  • CURLOPT_CUSTOMREQUEST: 当进行HTTP请求时,传递一个字符被GET或HEAD使用。为进行DELETE或其它操作是有益的,更Pass a string to be used instead of GET or HEAD when doing an HTTP request. This is useful for doing or another, more obscure, HTTP request.

    注意: 在确认你的服务器支持命令先不要去这样做。

  • 下列的选项要求一个文件描述(通过使用fopen() 函数获得):
    • CURLOPT_FILE: 这个文件将是你放置传送的输出文件,默认是STDOUT.
    • CURLOPT_INFILE: 这个文件是你传送过来的输入文件。
    • CURLOPT_WRITEHEADER: 这个文件写有你输出的头部分。
    • CURLOPT_STDERR: 这个文件写有错误而不是stderr。

Powered by WordPress