php - 通过 PHP 的 cURL 请求导致本地 nginx 服务器超时
问题描述
我试图通过PHP中的cURL获取一些json:
$params = array(
'need' => 'verify',
'access_token' => '123456789'
);
$paramsString = http_build_query($params);
$json_url = "http://localhost:8888/api/access-token-dummy.php";
$crl = curl_init();
curl_setopt($crl, CURLOPT_URL, $json_url);
curl_setopt($crl,CURLOPT_POST, count($params));
curl_setopt($crl,CURLOPT_POSTFIELDS, $paramsString);
$json = curl_exec($crl);
curl_close($crl);
$accessArray = json_decode($json, TRUE);
我是504 Gateway Time-Out
从 url 获取的,它是本地的,对我来说没有意义。它确实存在并且可以从浏览器访问。但是,我注意到,一旦我尝试通过上述方法请求它作为PHP 7中的cURL请求,所有其他方法也会导致超时(例如,以前工作的浏览器 url 中的刷新现在返回超时)尝试了这个 cURL 请求,但之前没有(当 url 几乎可以立即获取时,正如预期的那样)。
它是一个 nginx 1.13.2 服务器,同时托管发出此请求的 php 和请求 json 的 php url。最重要的是,我在前端的不同端口上有一个反应服务器。我提到这一点是因为我之前可能已经看到过关于这导致某种冲突的参考?
服务器的 CPU 永远不会出现峰值,并且在等待一两分钟后,浏览器就可以访问该 url。它永远无法通过 cURL 命令访问,它总是会创建一个超时并在接下来的一两分钟内阻止其他请求。
请求的 URL 内容似乎无关紧要。我已经重新创建了它,如下所示,它仍然会导致同样的问题:
<?PHP
header('Content-type: application/json;charset=utf-8');
$returnArray = [];
$returnArray['message_user'] = "success";
$returnJSON = json_encode($returnArray);
echo $returnJSON;
?>
Nginx日志不多说但是问题出现后出现如下:
2020/10/22 17:00:23 [error] 52847#0: *49 upstream timed out (60: Operation timed out) while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "POST /api/db-fetchurl.php HTTP/1.1", upstream: "nginxFastCGI.sock", host: "localhost:8888", referrer: "http://localhost:3000/requesturl"
解决方案
推荐阅读
- javascript - Is dispatch needed in an action in redux?
- django - Django - makemigrations 后无法迁移
- android - SMBJ & 德尔福 10.3.3
- mongodb - MongoDB 性能:$and 与具有多个键的单个对象
- apache-kafka - Kafka Connect 5.5.0 - 无法重置 max.request.size
- activemq - ActiveMQ - 如果任何队列中发生异常,则发送到多个队列的消息会卡在队列中
- vim - 在 vim 中编辑任何文件都会显示感叹号
- python - 如何在代码中安装 python 包
- c++ - 是否可以将概念作为模板参数传递?
- postgresql - 在 Postgresql 中打开 psql 时出现“权限被拒绝”重复出现的错误。为什么会出现此错误?如何解决?