PHP:使用curl向.php文件发送POST请求的困难

时间:2012-11-25 23:52:20

标签: php curl http-post

我有一个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也包含正确格式的所有信息。

1 个答案:

答案 0 :(得分:3)

我怀疑你直接运行你的php脚本而不使用web服务器,只需将脚本作为可执行文件启动即可。这是因为您的错误消息中有绝对路径。虽然运行像这样的PHP脚本是绝对正常的,但你必须问自己:cURL调用实际上是做什么的?它打开并运行您尝试引用的php文件A.php。为什么不?因为cURL会打开网址,而不是文件。如果不使用可以响应url请求的服务器(使用http服务器),你期望发生什么?

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