<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>~~天狼星技术博客~~ &#187; 用户体验</title>
	<atom:link href="http://blog.painiu.com/category/users/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.painiu.com</link>
	<description>淡定在黑暗和黎明时分!!!</description>
	<lastBuildDate>Mon, 16 Mar 2009 19:31:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>HTTP header中的 Cache-control</title>
		<link>http://blog.painiu.com/2008/11/77.html</link>
		<comments>http://blog.painiu.com/2008/11/77.html#comments</comments>
		<pubDate>Sat, 08 Nov 2008 14:51:11 +0000</pubDate>
		<dc:creator>数字人</dc:creator>
				<category><![CDATA[用户体验]]></category>
		<category><![CDATA[编程技巧]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nginx]]></category>

		<guid isPermaLink="false">http://blog.painiu.com/?p=77</guid>
		<description><![CDATA[Cache-control常见的取值有private、no-cache、max-age、must-revalidate等


网页的缓存是由HTTP消息头中的“Cache-control”来控制的，常见的取值有private、no-cache、max-age、must-revalidate等，默认为private。其作用根据不同的重新浏览方式分为以下几种情况：
（1） 打开新窗口
如果指定cache-control的值为private、no-cache、must-revalidate，那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值，那么在此值内的时间里就不会重新访问服务器，例如：
Cache-control: max-age=5
表示当访问此网页后的5秒内再次访问不会去服务器
（2） 在地址栏回车
如果值为private或must-revalidate（和网上说的不一样），则只有第一次访问时会访问服务器，以后就不再访问。如果值为no-cache，那么每次都会访问。如果值为max-age，则在过期之前不会重复访问。
（3） 按后退按扭
如果值为private、must-revalidate、max-age，则不会重访问，而如果为no-cache，则每次都重复访问
（4） 按刷新按扭
无论为何值，都会重复访问
当指定Cache-control值为“no-cache”时，访问此页面不会在Internet临时文章夹留下页面备份。
另外，通过指定“Expires”值也会影响到缓存。例如，指定Expires值为一个早已过去的时间，那么访问此网时若重复在地址栏按回车，那么每次都会重复访问：
Expires: Fri, 31 Dec 1999 16:00:00 GMT
在ASP中，可以通过Response对象的Expires、ExpiresAbsolute属性控制Expires值；通过Response对象的CacheControl属性控制Cache-control的值，例如：
Response.ExpiresAbsolute = #2000-1-1# ‘ 指定绝对的过期时间，这个时间用的是服务器当地时间，会被自动转换为GMT时间
Response.Expires = 20 ‘ 指定相对的过期时间，以分钟为单位，表示从当前时间起过多少分钟过期。
Response.CacheControl = “no-cache”


]]></description>
		<wfw:commentRss>http://blog.painiu.com/2008/11/77.html/feed</wfw:commentRss>
		<slash:comments>545</slash:comments>
		</item>
		<item>
		<title>关于邮件群发的经验和技巧</title>
		<link>http://blog.painiu.com/2008/07/65.html</link>
		<comments>http://blog.painiu.com/2008/07/65.html#comments</comments>
		<pubDate>Wed, 23 Jul 2008 07:13:51 +0000</pubDate>
		<dc:creator>数字人</dc:creator>
				<category><![CDATA[用户体验]]></category>
		<category><![CDATA[编程技巧]]></category>
		<category><![CDATA[Email]]></category>

		<guid isPermaLink="false">http://blog.painiu.com/?p=65</guid>
		<description><![CDATA[一、关于邮件群发的经验和技巧 
1、强力推荐使用免smtp服务器的群发软件。这种软件将您的电脑虚拟成发信服务器，邮件直接地送至对方的邮箱，可以清楚地知道发送成功的数量，还可以知道邮址不能发送成功的原因。如亿虎Email邮差和WorldCast等。
2、尽量不要使用多smtp服务器的群发软件。多smtp的服务器软件，由于先将邮件发送至smtp服务器进行中转，现在，一般的邮件服务器都做了 设置，如果smtp服务器检测到短时间内来自同一个IP地址的大量连接请求，就会中止转发邮件，从而产生大量退信现象。况且，现在免费的smtp服务器已 经很难找了。
3、建议将邮件地址打乱发送，效果最佳。您可以使用一些电子邮件地址列表筛选和管理软件，如Mail List Management和欧阳邮件列表管家可以轻松实现这一要求。
4、发送信件的时候，建议申请多个hotmail、yahoo等免费信箱作为发送信箱，轮流使用，而将自己常用的信箱作为回复信箱，这样可以避免常 用的信箱受到封锁，从而也可以避免因此产生的大量退信现象。如sohu.com的邮箱，经常使用同一个信箱发送信件的话，服务器会屏蔽您的邮址，从而不能 发送，碰到这种情况，就需要更换发送信箱了。
5、合理使用群发线程。群发线程越多，速度自然越快，但现在很多的服务器自动检测，如163.net、263.net的邮箱，如果线程数使用很多， 服务器马上显示太多的连接请求，拒绝再转发。具体多少线程数为好，用户可以根据自己的电脑进行测试，从而找到最佳的发送线程数，既要保证发送速度快，同时 也要保证最高的成功率，还要保证发送邮件的时候不死机。
6、群发软件的选择使用。由于每一款群发软件在设计时发送参数都略有不同，所以不是每一款群发软件都能发送邮件到任何一个邮箱。如：一款群发软件可 发送邮件至21cn.com、sohu.com、263.net等，但却不能够发送邮件至sina.com、etang.com。而另一款群发软件却可发 送邮件至sina.com、263.net、etang.com、sohu.com等，但它不能发送邮件至21cn.com。这种情况在免SMTP群发软 件中尤为突出。因此，要尽可能全面的群发邮件到不同的邮箱，建议用户使用不同的群发软件，一种软件不能发送成功的邮址，可以导入到另一种群发软件，试试 看。
7、由于网络速度和服务器设置等多方面的原因，发送的时候可能经常会出现服务器连接失败的提示，您可以将这些邮址重新发送一次，很多又可以成功的。
二、关于邮件地址收集的经验和技巧
1、搜集网站邮址软件。通过扫描网页及相关链接方式，不断搜索网页上公布的Email地址。重点推荐亿虎Email扫描大师、Fast Email Spider和商舟邮箱搜集大师。这些软件对收集行业邮件地址比较有用。建议您先收集一些行业网站的网址，然后利用这些软件搜索这些网站，可以得到大量活 跃程度比较高的邮址。
2、搜索服务器邮址软件。利用字典文件直接从邮件服务器收集邮址，重点推荐邮件地址探索者和伊妹捕神，本站已经整理了一份比较全面的中国邮件服务器和国际邮件服务器的清单以及字典文件，如果您觉得本站提供的邮址不够，可以利用这种搜索软件自行搜索服务器邮址。
3、搜索硬盘、光盘邮址软件。快速搜索电脑硬盘、光盘、软盘中的文本文件、网页文件及*.eml格式文件中的电子邮件地址，重点推荐：小不点 Email地址提取大师和科蓝邮件地址搜寻工具。基于这种软件的用途，您还可以利用teleport等网站下载软件将那些供求信息BBS信息，“拉回”到 自己的电脑，然后用这种软件进行搜索邮址，可以得到大量的有效Email地址。
三、关于邮件地址和管理和验证
1、邮址管理软件。电子邮件地址列表筛选和管理软件，可以帮助客户管理好自己的电子邮件列表，避免发送大量重复垃圾邮件， 重点推荐：Mail List Management(MLM)和欧阳邮件列表管家。MLM软件是我们使用过的邮址管理软件中功能最强，速度最快的软件，100万的邮址几分钟就可以完成 过滤重复邮址、重新排序等。欧阳邮件列表管家则可以快速将一个很大的邮址文件分割成较小的文件，以方便群发。
2、邮址验证软件。采用模拟向被校验邮箱发信，而实际上又并没有发出的方式来对检查邮件地址的存在与否，重点推荐： Advanced Email Verifier和Advanced Maillist Verify。我们在实际使用中发现，很多验证有效的邮址，在群发的时候就是不能发送成功，这是由于邮件服务器设置的原因，所以，如果您需要建立一个自己 的高效率的邮址列表，可以直接使用免smtp服务器的软件导入邮址群发，将那些发送成功的邮址保存下来以便今后使用。
四、关于信息发布软件
由于现在对邮件发送的越来越多的限制，群发邮件很容易产生“垃圾邮件”，很多的人采用供求信息BBS进行推广。这样的软件现在也很多，比较有名的如 商务快车、环球商务信息发布系统、营销之星和网际营销等等。这些软件可以将您的信息发布至国内外上千个BBS站点或者新闻组。但这些软件相对比较贵。
]]></description>
		<wfw:commentRss>http://blog.painiu.com/2008/07/65.html/feed</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>UNIX常用命令介绍</title>
		<link>http://blog.painiu.com/2008/01/9.html</link>
		<comments>http://blog.painiu.com/2008/01/9.html#comments</comments>
		<pubDate>Tue, 22 Jan 2008 09:02:00 +0000</pubDate>
		<dc:creator>数字人</dc:creator>
				<category><![CDATA[用户体验]]></category>
		<category><![CDATA[编程技巧]]></category>
		<category><![CDATA[Freebsd]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.painiu.com/2008/01/22/9/</guid>
		<description><![CDATA[UNIX常用命令介绍
下面主要讲解UNIX下基本命令的使用，由于时间和篇幅的原因，无法写出所有UNIX命令。你在使用这里没有列出的命令时，可以使用“&#8211;help”参数查询该命令所附的帮助．比如: ls -help将显示ls命令的详细信息．同时，你也可以利用man来查询更详细的使用说明。直接敲入man将显示所有命令的信息．如果你只想看一个命令的信息就用如下格式 man < 命令名>
比如在UNIX系统中敲入man ls将显示ls的详细信息． 按q键退出man界面．
如下命令介绍按字母顺序排列：
命令：at
介绍：at， batch， atq， atrm：安排，检查，删除队列中的工作。
at [-V] [-q 队列] [-f 文件名] [-mldbv] 时间
at -c 作业 [作业...]
atq [-V] [-q 队列] [-v]
atrm [-V] 作业 [作业...]
batch [-V] [-q 队列] [-f 文件名] [-mv] [时间]
at 在设定的时间执行作业。
atq 列出用户排在队列中的作业，如果是超级用户，则列出队列中的所有工作。
atrm 删除队列中的作业。
batch 用低优先级运行作业，只要系统的loadavg（系统平均负载）&#60;1.5（或者在atrun中设定的值）它就开始执行作业。
超级用户可以在任何情况下使用at系列的命令。
一般用户使用at系列命令的权利由文件 /etc/at.allow，/etc/at.deny控制。
如果/etc/at.allow存在，则只有列在这个文件中的用户才能使用at系列的命令。
如果/etc/at.allow文件不存在，则检查文件/etc/at.deny这个文件。 只要不列在这个文件中的用户都可以使用at系列的命令。
缺省的配置是/etc/at.deny为一个空文件，这表明所有的用户都可以使用at系列的命令。
范例：
at -f work 4pm + 3 days　在三天后下午4点执行文件work中的作业。
at -f work 10am Jul 31 　在七月31日上午10点执行文件work中的作业。
命令：bash
介绍：bash &#8211; GNU <a href="http://blog.painiu.com/2008/01/9.html" class="more-link">更多 &#62;</a>]]></description>
		<wfw:commentRss>http://blog.painiu.com/2008/01/9.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web服务器使用的一些小技巧备忘录</title>
		<link>http://blog.painiu.com/2008/01/7.html</link>
		<comments>http://blog.painiu.com/2008/01/7.html#comments</comments>
		<pubDate>Tue, 22 Jan 2008 09:00:45 +0000</pubDate>
		<dc:creator>数字人</dc:creator>
				<category><![CDATA[用户体验]]></category>
		<category><![CDATA[编程技巧]]></category>
		<category><![CDATA[Freebsd]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.painiu.com/2008/01/22/7/</guid>
		<description><![CDATA[Web服务器使用的一些小技巧备忘录
这个日记会不断更新，主要记录一些简短而且容易忘记的东西&#8230;..
1、刚装的PHP5注意register_globals的状态
刚安装好PHP的时候，也许会碰到表单递交变量无法接收的事情。相关问题：为什么我的程序无法得到传递过来的变量？为什么我的表单无法传递数据？
其实问题很简单，刚安装的PHP默认是应该用$_GET['user_name']和$_GET['user_pass']来接受传递过来的值，也就是说register_globals处于Off状态，这个问题我们可以通过写个测试文件如：test.php 来观察register_globals的状态。test.php的全部代码就一句话，很简单的，如：
< ？ echo phpinfo(); ？> //注意这里的？不能用中文格式
你可以观察到register_globals处于什么状态，如果要修改这个状态可以修改php.ini来实现。我们这里以FreeBSD系统为例来说明修改方法,其他操作系统雷同：
www# ee /usr/local/etc/php.ini （用^y search prompt 去搜索register_globals在那一行）
www# /usr/local/etc/rc.d/apache22 restart （修改以后重新启动apache就生效了）
2、启用FreeBSD的捏名FTP服务
sysintall&#8212;configure&#8212;Networking&#8212; Anon FTP（This machine wishes to allow anonymous FTP）
3、phpinfo()的妙用
phpinfo()是一个可以用来检查PHP的运行状况的函数，但Apache Environment里面有很多变量我们可以在撰写PHP程序的时候用的到，打开phpinfo()你会发现有很多表格，表格前面其实很多是变量名称，你可以用echo来显示这些内容，比如echo $_SERVER["SCRIPT_FILENAME"] ;将返回你请求的文件名的绝对路径。
4、SQL语句备忘
替换某个字符 update 表名 set 字段名=REPLACE(字段名,&#8217;被替换内容&#8217;,'替换成内容&#8217;)
5、安装和更新prots的方法
www# cd /usr/ports/net/cvsup-without-gui
www# make install clean
www# mkdir /usr/cvsup
www# cp /usr/share/examples/cvsup/stable-supfile /usr/cvsup
www# cp /usr/share/examples/cvsup/standard-supfile /usr/cvsup
www# cp /usr/share/examples/cvsup/ports-supfile /usr/cvsup
www# ee /usr/cvsup/ports-supfile
修改服务器为 *default host=cvsup1.cn.freebsd.org
www# source ~/.cshrc
www# cvsup -g <a href="http://blog.painiu.com/2008/01/7.html" class="more-link">更多 &#62;</a>]]></description>
		<wfw:commentRss>http://blog.painiu.com/2008/01/7.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>FreeBSD 服务器架设和设置备忘</title>
		<link>http://blog.painiu.com/2008/01/6.html</link>
		<comments>http://blog.painiu.com/2008/01/6.html#comments</comments>
		<pubDate>Tue, 22 Jan 2008 08:59:25 +0000</pubDate>
		<dc:creator>数字人</dc:creator>
				<category><![CDATA[用户体验]]></category>
		<category><![CDATA[编程技巧]]></category>
		<category><![CDATA[Freebsd]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.painiu.com/2008/01/22/6/</guid>
		<description><![CDATA[FreeBSD 服务器架设和设置备忘
本文仅提供自己备查之用，所以很多地方可能由于机器环境的不同和用途不同，设置会有所不同。
#&#8211;【Freebsd用光盘最小化安装】
这个不是重点，有很多文章，这里就不重复了。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
#&#8211;【安装sys和ports】
系统安装最小化模式+man+ports+src+sys+perl5.8
www# /stand/sysinstall
位置：
Configure &#8212; Distributions &#8212; src &#8212; sys
Configure &#8212; Distributions &#8212; Ports
Configure &#8212; Distributions &#8212; man
#&#8211;【安装网络系统，使计算机可以上网并准备防火墙、IPNAT和DNS设置】
www# ee /etc/ipf.rules
写入：
pass in all
pass out all
www# ee /etc/ipnat.rules
写入：
map tun0 192.168.1.0/24 -> 0/32 proxy port ftp ftp/tcp
map tun0 192.168.1.0/24 -> 0/32 portmap tcp/udp 10000:65535
map tun0 192.168.1.0/24 -> 0/32
rdr tun0 0/0 port 80 -> 127.0.0.1 port 3128 tcp //这里转发是为了用squid
www# ee <a href="http://blog.painiu.com/2008/01/6.html" class="more-link">更多 &#62;</a>]]></description>
		<wfw:commentRss>http://blog.painiu.com/2008/01/6.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>使用PHP的Curl库模拟访问</title>
		<link>http://blog.painiu.com/2008/01/3.html</link>
		<comments>http://blog.painiu.com/2008/01/3.html#comments</comments>
		<pubDate>Tue, 22 Jan 2008 08:42:13 +0000</pubDate>
		<dc:creator>数字人</dc:creator>
				<category><![CDATA[用户体验]]></category>
		<category><![CDATA[编程技巧]]></category>
		<category><![CDATA[CURL]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.painiu.com/2008/01/22/3/</guid>
		<description><![CDATA[转:
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: <a href="http://blog.painiu.com/2008/01/3.html" class="more-link">更多 &#62;</a>]]></description>
		<wfw:commentRss>http://blog.painiu.com/2008/01/3.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>关于 CURL 的几点心得</title>
		<link>http://blog.painiu.com/2008/01/2.html</link>
		<comments>http://blog.painiu.com/2008/01/2.html#comments</comments>
		<pubDate>Tue, 22 Jan 2008 08:36:25 +0000</pubDate>
		<dc:creator>数字人</dc:creator>
				<category><![CDATA[用户体验]]></category>
		<category><![CDATA[编程技巧]]></category>
		<category><![CDATA[CURL]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.painiu.com/2008/01/22/2/</guid>
		<description><![CDATA[CURL 是 Client URL Library Functions 的缩写，由 Daniel Stenberg 创建，更多内容可以参考他的网站。最近几天突然对 HTTP 采集有了兴趣。之前我在做这方面程序，一般通过两种方法，一个是利用 PHP 自身的文件操作函数。PHP 的 fopen，readfile 都是可以支持 http 协议的，这样可以很方便的获取互联网上的内容。另一种方法是通过 PHP 的 Socket 函数，这个方法的好处是对各种协议都可以支持，缺点是使用起来比较麻烦，要对协议有一定的了解。在 HTTP 获取方面，运用 Socket 的 Snoopy 类是一个非常好用的 PHP HTTP 客户端，也是我原来最常用的方法。
随便翻翻 PHP 手册就会发现，PHP 本身可以支持 libcurl。用 C/C++ 写成的 libcurl 相比 Snoopy 更快速更可靠，而且除了 HTTP 协议外，还广泛支持其他协议（ https, ftp, ladp 等等）。libcurl 并不是 PHP 默认加载的模块，具体如何启用可以参考 PHP 手册，这里就不多说了。PHP libcurl 使用非常简单，例如：

 <a href="http://blog.painiu.com/2008/01/2.html" class="more-link">更多 &#62;</a>]]></description>
		<wfw:commentRss>http://blog.painiu.com/2008/01/2.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
