Php 没有信号
我有一个简单的cURL脚本,可以很好地工作。 但我很好奇如何检测坏的Url。我所说的“坏”是指一个不存在的URL,或者如果我调用的服务器关闭了一段时间,或者我犯了一个错误并输入了错误的URL。(仅举例子) 以下是我目前掌握的情况:Php 没有信号,php,curl,Php,Curl,我有一个简单的cURL脚本,可以很好地工作。 但我很好奇如何检测坏的Url。我所说的“坏”是指一个不存在的URL,或者如果我调用的服务器关闭了一段时间,或者我犯了一个错误并输入了错误的URL。(仅举例子) 以下是我目前掌握的情况: <?php $url = 'http://someurl_or_ip.com/some_file.php'; $post_fields = "type=whatever"; $post_fields .= "&first=".$first; $post
<?php
$url = 'http://someurl_or_ip.com/some_file.php';
$post_fields = "type=whatever";
$post_fields .= "&first=".$first;
$post_fields .= "&last=".$last;
$ch = curl_init($url); // create a new cURL resource
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_TIMEOUT, 1800);
// Execute the request.
$raw_response = curl_exec($ch);
$succeeded = curl_errno($ch) == 0 ? true : false;
echo $raw_response;
?>
通常,$raw_响应是我可以解析并用于其他事情的东西,比如我希望如何向用户显示数据
我只是将$url替换为一个不存在的文件(但指向一个有效的域),然后我得到“找不到…请求的url…在此服务器上找不到…”
这是否意味着我需要解析这个apache服务器消息才能知道它不是一个好的URL?或者cURL是否有办法通过头信息检测到它?您可以查看头中的HTTP响应代码,对于未找到的文件,该代码将为404:
$http = curl_init($url);
$result = curl_exec($http);
$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
curl_close($http);
echo $http_status;
如果服务器不可用,显然根本不会从服务器获得响应,因此没有HTTP响应代码。在这种情况下,curl\u exec()
将返回false,在这种情况下,您可以处理错误:
if(curl_exec($ch) !== false) {
// Success
} else {
// Error
$error_str = curl_error($ch);
$error_num = curl_errno($ch);
}