在PHP Curl情况下,当我们需要在网络抓取时存储/读取cookie时,感觉很多资源鼓励使用文件来处理带有这些选项的cookie
curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieJarFilename); curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieJarFilename);
这里的底线是他们使用单个文件作为cookiejar(通常是.txt文件).
但在实际情况中,我们的网站不仅可以通过一台计算机访问,而且很可能有很多计算机同时访问它,还有一些机器人,如Googlebots,Yahoo Slurp等.
因此,使用单个.txt文件,cookie jar是否会覆盖相同的文本文件,这对于cookie来说真是一团糟?
或者我错了?
什么是处理cookie的"正确"方法?
如果有多个人访问您的页面,并且您需要curl
为每个人执行唯一的Cookie,那么您可以采取一些措施来处理此方案.
1)如果您的用户已通过身份验证并且已经$_SESSION
开始使用,那么您可以使用session_id()
for cookie的文件名.
2)如果您的用户不需要任何会话(例如Google机器人),您可以使用时间戳+为您的cookie文件名添加一个额外的随机数来创建cookie.例如:
$cookieName = time()."_".substr(md5(microtime()),0,5).".txt"; // Would output something like: // `1388788940_91ab4.txt`
但在这种情况下,如果用户在5分钟后返回给您,则无法重复使用cookie(除非您使用cookie文件名设置用户的cookie).
对于任何一种情况,请确保定期清理这些文件.否则,您将在目录中创建大量的cookie文件.