2012-11-25 166 views
1

我有一个php文件,比如A.php,它通过$_POST方法获取一些变量并更新本地数据库。PHP:向curl发送POST请求到.php文件的困难

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

其中我使用卷曲的功能做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也具有正确形式的所有信息。

+0

所以它需要很长的时间来回应。你是否尝试过在通话之外张贴它,例如从网页上看它是否会剔除? – Popnoodles

+0

是的,我试图看看它是否收集了信息,并且在不到一秒的时间内完成,我甚至打印了所有信息,看看它是否是正确的形式。 Inside datagather我使用POST方法将数据保存在本地数据库中。 我试着在localhost下运行它,如果我在网页上运行它会不同吗? – ksm001

回答

4

我怀疑你直接运行你的php脚本而不使用web服务器,而是通过简单地启动脚本作为可执行文件。这是因为您的错误消息中有绝对路径。虽然运行这样的php脚本是绝对不错的,但你必须问自己:这个cURL调用实际上产生了什么?它确实不是打开并运行您试图引用的php文件A.php。为什么不?由于cURL打开网址,而不是文件。如果没有使用可以对url请求做出反应的服务器(ike一个http服务器),你预计会发生什么?

你得到的错误是一个超时,因为cURL试图联系一个http服务器。由于您没有指定有效的网址,因此很可能会回到'localhost'。但没有服务器在那里听...

+0

非常感谢你确实是这个问题! 我将$ url更改为“http://localhost//...A.php”,它起作用了!哇,差不多是凌晨2点,我不敢相信我为此浪费了2个小时。 – ksm001

+1

不错,赶上哈哈。 – Popnoodles