在PHP Curl的情况下,当我们需要根据web抓取来存储/读取cookie时,它感觉到有很多资源鼓励使用文件来处理这些选项。
curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieJarFilename);
curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieJarFilename);这里的底线是,它们使用单个文件作为cookiejar (通常是.txt文件)。
但在真实的情况下,我们的网站不仅被一台计算机访问,很可能有很多计算机同时访问它,还有一些机器人,如Googlebots、Yahoo Slurp等等。
那么,对于单.txt文件,cookie jar显然会覆盖相同的文本文件,这对cookie来说真是一团糟吗?
还是我搞错了?
处理饼干的“正确”方法是什么?
发布于 2014-01-03 08:46:36
如果有多个人访问您的页面,并且您需要为每个人使用唯一的cookies来执行curl,那么您可以做几件事情来处理这个场景。
1)如果您的用户经过身份验证,并且在您的端启动了一个$_SESSION,那么您可以使用session_id()作为cookie的文件名。
2)如果您的用户不需要任何会话(例如Google ),您可以使用时间戳+一个额外的随机数来创建cookie文件名。例如:
$cookieName = time()."_".substr(md5(microtime()),0,5).".txt";
// Would output something like:
// `1388788940_91ab4.txt`但是在这种情况下,如果用户在5分钟后返回给您(除非您用cookie文件名设置用户的cookie ),就不能重用cookie。
无论是哪种情况,都要确保定期清理这些文件。否则,您将在目录中创建大量cookie文件。
发布于 2017-03-03 10:24:03
如果你想让PHP帮你做清理。
像bagz_man说的那样使用tempnam,但是在使用之后,读取文件内容并将其存储在您的会话中。然后可以删除临时文件。下次需要时创建一个新文件。
唯一留下的是会话,php负责这个会话。
https://stackoverflow.com/questions/20896893
复制相似问题