【问题标题】:cURL not posting to severals urls from an databasecURL 没有从数据库发布到多个 url
【发布时间】: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 设置为更高的时间限制。

标签: php mysql curl


【解决方案1】:

您是否尝试过回显 $row['url'] 并查看循环中的内容?

【讨论】:

  • 是的,我有,它确实会在表格中回显所有这些 URL。
  • 可能你的php执行时间不足以处理所有请求,你可以增加时间限制或者在你的脚本set_time_limit(0)中添加这个;
猜你喜欢
  • 2016-01-19
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 2016-02-18
相关资源
最近更新 更多