提交表单后CURL挂起

时间:2018-07-06 18:54:31

标签: php curl

我搜索了一会儿,发现其他人发生了许多类似的情况;但是,我找不到适合我的解决方案。

我在服务器上运行了最新的Ubuntu,Apache和PHP版本。我检查了更新,安装后没有任何改善。这是我的代码:

$ip = getServerIP($stand).":8080";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$ip);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  'server-id: '.$stand,
  'script: '.$script,
  'device: '.$device,
  'api-key: '.file_get_contents(getcwd() .'/../secure/serverkey')
    ));

curl_exec($ch)
curl_close($ch);

$stand是父函数采用的参数。一切正常,直到我致电curl_exec。提交表单后,将运行此代码。 Chrome在表单页面上挂起大约2分钟,然后最终转到该代码所在的页面。有指导吗?

更新:问题出在C#端;这个问题不再相关。抱歉,我正在和其他人一起工作,他们正在处理C#,所以我不知道问题出在什么地方。

1 个答案:

答案 0 :(得分:1)

这对于评论来说太庞大了,所以这是我在ApiHelper类中设置了详细的CURL:

$st       = microtime(true);
$verbiage = null;
if ($this->verbose) {
    // write out the curl debug stuff
    curl_setopt($ch , CURLINFO_HEADER_OUT , false);
    curl_setopt($ch , CURLOPT_VERBOSE , true);
    $verbiage = fopen('php://temp' , 'w+');
    curl_setopt($ch , CURLOPT_STDERR , $verbiage);
}

$resp  = curl_exec($ch);
$end   = microtime(true);           // get as float
$delta = 1000.0 * ($end - $st);    // treat as float
if (Config::getCurrentConfig()->options->logServerResponseTimes) {
    $this->getInstanceLogger()->debug("WS Round trip took " . sprintf("%.2f" , $delta) . " ms.");
}
if ($this->verbose) {
    // rewind and log the verbose output
    rewind($verbiage);
    $verboseLog = stream_get_contents($verbiage);
    $this->getInstanceLogger()->debug("Verbose cURL : \n$verboseLog");
    fclose($verbiage);
}

curl_close($ch);
return $resp;

最后,xdebug是支持php进程的符号调试的协议套件。它会减慢某些速度,但是大多数情况下会尝试在运行(调试中)的php进程和侦听进程之间的所有时间始终启动出站连接。查看您的php.ini文件(apache,php-fpm和cli),然后关闭xdebug(如果存在)。