PHP cURL请求占用整个超时

时间:2019-03-27 17:48:08

标签: php laravel curl laravel-5

我目前有一个Laravel应用程序,它正在执行从一个路由到同一路由内另一路由的CURL请求。我的CURL看起来像这样:

//LOGGING THAT A CURL CALL IS ABOUT TO BE MADE 
$url = env('APP_URL') . '/tests/add/results'; 
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //return server error
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLINFO_HEADER_OUT, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $test_post_data);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);

在发送POST的路由中,我记录的第一件事是请求数据:

//LOGING THAT I RECEIVED THE CURL CALL in receiving function

我注意到,请求数据的日志记录的时间与超时时间完全相同,这意味着请求实际上是在首次调用后10秒发送的。

在我的日志中,我会看到类似的东西:

10:10:10 - LOGGING CURL CALL
10:10:20 - Recieving CURL call

如果我将超时时间更改为30,则日志显示30秒钟后我收到了CURL呼叫。

有人知道为什么会这样吗?

CURL的响应始终以false的形式返回。

2 个答案:

答案 0 :(得分:0)

您没有提供足够的信息,但是我认为问题可能是以下一种或多种:

  • WebServer http://127.0.0.1:8000未运行
  • 位于http://127.0.0.1:8000/tests/add/results上的脚本运行时间过长,请求超时在完成之前
  • 请求的路径返回重定向标头并创建无限循环
  • 响应太大,无法在30秒内完成数据传输(如果在本地主机上,则非常奇怪)

尝试更多调试,并提供更多信息,以便我们为您提供帮助。


PS:首先,我将尝试捕获标题(curl_setopt($ch, CURLINFO_HEADER_OUT, true);)并打印出响应(var_dump($response);)-或将其保存到某个文件中:)

答案 1 :(得分:0)

我做了以下工作来使发布请求工作: 我没有通过CURL调用路由,而是直接在route函数中发布了帖子

['foo', 'bar[1]', 'baz[1:10:var1[2+1]]', 'var1[2+1]', 'qux[[1,2,int(var2)]]', 'var2', 'bob[len("foobar")]', 'var3[0]']
['baz[1:10:var1[2+1]]', 'var1[2+1]']
['baz[[1]:10:var1[2+1]:[var3[3+1*x]]]', 'var1[2+1]', 'var3[3+1*x]', 'x']