【问题标题】:PHP: Difficulties with sending a POST request to a .php file with curlPHP:使用 curl 向 .php 文件发送 POST 请求时遇到困难
【发布时间】:2012-11-25 23:52:20
【问题描述】:

我有一个 php 文件,比如说 A.php,它通过 $_POST 方法获取一些变量并更新本地数据库。

另一个名为dataGather.php 的php 文件以正确的格式收集数据,然后尝试使用A.php 文件将数据发送到本地数据库。请注意,这两个文件都在同一个目录中。

我使用 curl 函数执行POST 请求的代码如下:

    $url = "A.php";
    $ch = curl_init();
    $curlConfig = array(
        CURLOPT_URL            => $url,
        CURLOPT_POST           => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS     => $datatopost
    );
    curl_setopt_array($ch, $curlConfig);
    $result = curl_exec($ch);
    curl_close($ch);
    echo $result;

$datatopost

是一个类似下面的数组:

$datatopost = array (
       "value1" => $val1,
       "value2" => $val2,
        etc
 }

问题是当我运行我的程序时,我得到以下结果:

Fatal error: Maximum execution time of 30 seconds exceeded in 
        C:\xampp\htdocs\dataGather.php on line 97

有人知道为什么会这样吗?提前致谢

PS:文件A.php 100% 正确,因为我已经通过收集javascript 所需的信息对其进行了测试。它以我想要的方式通知数据库。此外,数组$datatopost 包含正确格式的所有信息。

【问题讨论】:

  • 所以回复时间太长了。您是否尝试过在通话之外发布它,例如从网页上发布它是否只是滴答作响?
  • 是的,我尝试查看它是否收集了信息,并且在不到一秒的时间内完成了,我什至打印了所有信息以查看它是否是正确的形式。在 datagather 内部,我使用 POST 方法将数据保存在本地数据库中。我试过在localhost下运行,如果在网页上运行会不会不一样?

标签: php curl http-post


【解决方案1】:

我怀疑你直接运行你的 php 脚本而不使用网络服务器,而是简单地将脚本作为可执行文件启动。错误消息中有绝对路径这一事实表明了这一点。虽然运行这样的 php 脚本绝对没问题,但您必须问自己:那个 cURL 调用实际上是做什么的?它确实 not 打开并运行您尝试引用的 php 文件 A.php。为什么不?因为 cURL 打开的是 URLs,而不是文件。如果不使用可以对 url 请求做出反应的服务器(例如 http 服务器),您期望会发生什么?

您得到的错误是超时,因为 cURL 尝试联系 http 服务器。由于您没有指定有效的 URL,它很可能会退回到“localhost”。但是那里没有服务器在监听...

【讨论】:

  • 非常感谢,这确实是问题所在!我将 $url 更改为“localhost//...//A.php”,它成功了!哇,快凌晨 2 点了,真不敢相信我为此浪费了 2 个小时。
猜你喜欢
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 2016-03-08
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多