cURL geto 无响应 无错误 在线服务器
cURL geto no response no error online server
希望有人能帮我解决这个问题。我尝试使用 cURL 调用外部站点,但没有收到任何错误或响应。然而它在本地服务器上运行良好但在生产服务器上不起作用。我使用 file_get_contents() 开始通话,但在线也失败了。我与托管商谈过,他们提到问题出在代码中。这是我的代码,有人可以帮忙吗!?`
function send_with_curl($url, $data) {
$data_string;
//url-ify the data for the POST
foreach ($data as $key => $value) { $data_string .= $key . '=' . $value . '&';
}
rtrim($data_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_POST, count($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
if (!is_string($result) || !strlen($result)) {
$result = "Failed to connect.";
}
//close connection
curl_close($ch);
return $result;
}
我还有另一个使用 file_get_contents() 的函数,无论我使用哪个函数,它们都可以在本地工作,但在线失败时没有错误 我花了 4 个多小时试图与托管人员一起修复它,直到他们最终说错误在代码中,他们不熟悉这些代码:(
function send_with_file($url, $context, $sender) {
global $database;
if (!$result = file_get_contents($url, false, $context)) {
echo "Message sending failed, please check your internet.";
exit ;
} else {
//--UPDATING THE DATABASE------
$sql_update = "SELECT * FROM users WHERE users_type='2'";
$query_update = $database -> query($sql_update);
while ($update = $database -> fetch_array($query_update)) {
$update_user = $update['users_id'];
if ($update_user == $sender) {
if ($result === FALSE) {/* Handle error */
}
} else {
}
}
}
return $result;
}
将 $result
与 false
进行比较,然后检查 curl_error()
类似...
$result = curl_exec($ch);
if($result === false) {
echo "Error in cURL : " . curl_error($ch);
}
代码没有问题,我只是跟踪了我尝试连接的 url 并意识到与托管服务器通信花费的时间太长。
希望有人能帮我解决这个问题。我尝试使用 cURL 调用外部站点,但没有收到任何错误或响应。然而它在本地服务器上运行良好但在生产服务器上不起作用。我使用 file_get_contents() 开始通话,但在线也失败了。我与托管商谈过,他们提到问题出在代码中。这是我的代码,有人可以帮忙吗!?`
function send_with_curl($url, $data) {
$data_string;
//url-ify the data for the POST
foreach ($data as $key => $value) { $data_string .= $key . '=' . $value . '&';
}
rtrim($data_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_POST, count($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
if (!is_string($result) || !strlen($result)) {
$result = "Failed to connect.";
}
//close connection
curl_close($ch);
return $result;
}
我还有另一个使用 file_get_contents() 的函数,无论我使用哪个函数,它们都可以在本地工作,但在线失败时没有错误 我花了 4 个多小时试图与托管人员一起修复它,直到他们最终说错误在代码中,他们不熟悉这些代码:(
function send_with_file($url, $context, $sender) {
global $database;
if (!$result = file_get_contents($url, false, $context)) {
echo "Message sending failed, please check your internet.";
exit ;
} else {
//--UPDATING THE DATABASE------
$sql_update = "SELECT * FROM users WHERE users_type='2'";
$query_update = $database -> query($sql_update);
while ($update = $database -> fetch_array($query_update)) {
$update_user = $update['users_id'];
if ($update_user == $sender) {
if ($result === FALSE) {/* Handle error */
}
} else {
}
}
}
return $result;
}
将 $result
与 false
进行比较,然后检查 curl_error()
类似...
$result = curl_exec($ch);
if($result === false) {
echo "Error in cURL : " . curl_error($ch);
}
代码没有问题,我只是跟踪了我尝试连接的 url 并意识到与托管服务器通信花费的时间太长。