Php 提交表单后,CURL将挂起

Php 提交表单后,CURL将挂起,php,curl,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(

我搜索了一段时间,发现许多类似的情况发生在其他人身上;但是,我找不到适合我的解决方案

我的服务器上运行着最新的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\u exec
之前,一切正常。此代码在提交表单后运行。Chrome在表单页面上挂起大约2分钟,然后它最终转到该代码所在的页面。有什么指导吗


更新:问题出在C方;这个问题不再重要了。抱歉,我正在与其他人合作,他们正在处理C#,因此我不知道问题出在哪里。

这太大,无法发表评论,因此我在ApiHelper类中设置了verbose 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,请关闭它。

@cale\b这不是特定于chrome的;我已经试过了。Edge说它在“等待…”这是代码所在的页面。“此代码在提交表单后运行”表示此代码位于表单后的页面上。这段代码正是它挂起的地方。我已经用日志语句对代码进行了多次测试,以验证代码挂起的位置。使用
echo
将无法工作,因为页面在2分钟内未加载。编辑您1。从服务器的命令行尝试发出此curl(查看是否是com问题)2。尝试使用verbosecurl来获取有关连接的详细信息,3。在一个不清楚的问题上投反对票时,请保持冷静?服务器没有响应。这是C代码。它所需要做的就是接收@cale_b。对不起,如果对你更合适的话,我想我可以说“浏览器”。@cale_b嘿,谢谢你删除评论。你真是帮了大忙,我去看看。这看起来很有帮助;谢谢:)