我搜索了一会儿,发现其他人发生了许多类似的情况;但是,我找不到适合我的解决方案。
我在服务器上运行了最新的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#,所以我不知道问题出在什么地方。
答案 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(如果存在)。