有一个重定向到服务器的信息,一旦响应来自服务器,我想检查HTTP代码,如果有任何代码以4XX开头,则抛出异常.为此我需要知道如何才能从头部获取HTTP代码?此处还涉及到服务器的重定向,所以我害怕卷曲对我没用.
到目前为止,我已经尝试过这个解决方案,但它很慢并且在我的情况下创建脚本超时.我不想增加脚本超时时间并等待更长时间才能获得HTTP代码.
提前感谢任何建议.
我创建了以下PHP函数到网页的HTTP代码.
function get_link_status($url, $timeout = 10)
{
$ch = curl_init();
// set cURL options
$opts = array(CURLOPT_RETURNTRANSFER => true, // do not output to browser
CURLOPT_URL => $url, // set URL
CURLOPT_NOBODY => true, // do a HEAD request only
CURLOPT_TIMEOUT => $timeout); // set timeout
curl_setopt_array($ch, $opts);
curl_exec($ch); // do it!
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); // find HTTP status
curl_close($ch); // close handle
return $status;
}
Run Code Online (Sandbox Code Playgroud)
如何修改此功能以遵循301和302重定向(可能的多重定向)并获取最终的HTTP状态代码?
我正在尝试检查某个域是否存在.我的想法是用file_get_contents()读取内容,并检查它是成功还是失败.
$line = file_get_contents('http://www.domain.com');
if ($line==false)
echo 'Domain is dead';
else
echo 'Domain is live';
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当它失败时,它会在网页上输出警告.通过PHP配置关闭所有警告不是一个选项,因为我需要在其他一些部分.有没有办法让这个单一语句不输出警告?
或者有更好的方法来检查域名是否有效?我试过checkdnsrr()但它很慢.
有没有更好的方法来检查文件是否存在(它在不同的域上,因此file_exists不起作用)比这个?
$fp = fsockopen($fileUri, 80, $errno, $errstr, 30);
if (!$fp) {
// file exists
}
fclose($fp);
Run Code Online (Sandbox Code Playgroud) 我为WordPress创建了一个插件,它需要存在两个文件才能正常运行.
第一个文件定义为文件系统路径,第二个文件定义为URL.
假设第一个文件是:
/home/my_site/public_html/some_folder/required_file.php
Run Code Online (Sandbox Code Playgroud)
第二个文件是:
http://www.my_site.com/some_folder/required_url_file.php
Run Code Online (Sandbox Code Playgroud)
请注意,这两个文件与文件系统中的文件不同.required_file.php具有除required_url_file.php之外的其他内容,并且它们的行为绝对不同
有关如何验证两个文件的存在的任何想法?