用php怎么批量获取302跳转后的真实地址
这么写的,效率太低了,有几千可能上万个地址要转换怎么办?
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// 不需要页面内容
curl_setopt($ch, CURLOPT_NOBODY, 1);
// 不直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 返回最后的Location
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
$info = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
curl_close($ch);
?>
@hostei,如果跳转后的地址是没有规律的,那你就无法避免发几万个请求给服务器,然后问题就变成怎么实现效率比较高了。
如果只会302一次,用get_headers()可以减少一次请求。(设置
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1)
时,curl会请求跳转后的页面,虽然你并不需要那个页面,你从前一个页面就已经能得到跳转后的地址了。)