Php 没有信号

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

我有一个简单的cURL脚本,可以很好地工作。 但我很好奇如何检测坏的Url。我所说的“坏”是指一个不存在的URL,或者如果我调用的服务器关闭了一段时间,或者我犯了一个错误并输入了错误的URL。(仅举例子)

以下是我目前掌握的情况:

<?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);
}