加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

使用curl在PHP中获取HTTP代码

发布时间:2020-12-14 00:22:49 所属栏目:Linux 来源:网络整理
导读:我正在使用CURL来获取站点的状态,如果它是向上/向下或重定向到另一个站点.我希望尽可能简化它,但效果不佳. ?php$ch = curl_init($url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_TIMEOUT,10);$output = curl_exec($ch);$httpcode
我正在使用CURL来获取站点的状态,如果它是向上/向下或重定向到另一个站点.我希望尽可能简化它,但效果不佳.

<?php
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_TIMEOUT,10);
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);

return $httpcode;
?>

我把它包裹在一个函数中.它工作正常,但性能不是最好的,因为它下载整个页面,如果我删除$output = curl_exec($ch);它一直返回0.

有谁知道如何使性能更好?

解决方法

首先确保URL实际上是否有效(字符串,非空,良好的语法),这可以快速检查服务器端.例如,首先执行此操作可以节省大量时间:

if(!$url || !is_string($url) || ! preg_match('/^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$/i',$url)){
    return false;
}

确保只获取标题,而不是正文内容:

@curl_setopt($ch,CURLOPT_HEADER,true);  // we want headers
@curl_setopt($ch,CURLOPT_NOBODY,true);  // we don't need body

有关获取URL状态http代码的更多详细信息,请参阅我发布的另一篇文章(它还有助于以下重定向):

> How can I check if a URL exists via PHP?

整体来说:

$url = 'http://www.example.com';
$ch = curl_init($url);
curl_setopt($ch,true);    // we want headers
curl_setopt($ch,true);    // we don't need body
curl_setopt($ch,CURLINFO_HTTP_CODE);
curl_close($ch);

echo 'HTTP code: ' . $httpcode;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读