【发布时间】:2013-02-28 21:04:13
【问题描述】:
我遇到了这个问题,每当我尝试(从 MySQL 数据库)获取 url,然后使用 cURL 向 url 发布请求时,它只会发布其中一个 url。我的数据库中总共有 11 个 url,如果这有什么改变的话。
这是我的代码:
$result = mysql_query ("SELECT * FROM urls");
while ($row = mysql_fetch_array($result)) {
$ch = curl_init();
$url = $row['url'];
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 0); // times out after Ns
curl_setopt($ch, CURLOPT_POST, 1); // set POST method
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=test"); // add POST fields
$result = curl_exec($ch); // run the whole process
curl_close($ch);
echo $result;
};
提前致谢。
【问题讨论】:
-
为了澄清起见,您尝试通过 POST 将“user=test”发送到您从数据库中提取的每个 URL 中?
-
@JCSickmeyer - 是的,没错。
-
为了提高效率,您不必在每次迭代时关闭/重新打开 curl。您可以简单地在循环内调用 CURLOPT_URL 和 curl_exec() 。 curl 句柄可以重复使用。
-
@MarcB 它仍然不能解决问题。感谢您让我知道 cURL 可以重复使用。
-
您要发布到的这些 URL...假设它们旨在接受此 POST 参数,它们中的任何一个是否安全?或者他们是否只有需要用户名和密码的“HTTPS”安全访问?如果是这样,您可能还需要其他一些 cURL 选项。我能想到的唯一另一件事是将
CURLOPT_TIMEOUT设置为更高的时间限制。