CURL_couldn't connect to host

api.testks.com 已在本机host做了指向, 浏览器直接访问是可以打开页面,但是从CURL里就会返回false. 如果将域名换成线上的,如www.baidu.com则问题.

为什么自己指的HOST就不行呢?

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://api.testks.com");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $res = curl_exec($ch);
阅读 2.9k
1 个回答

应该是你本机的 php-cgi 进程繁忙,请求得不到响应。
要搞清 curl localhost 这个问题,假设环境是 nginx + fpm, nginx 部分配置如下:

location ~ \.php {
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_pass   127.0.0.1:9000;
}

想像一次 http 请求到来, nginx 匹配到 php 文件时, 通过 fastcgi 协议把请求交由 php-cgi 处理,
php-cgi 进程监听到 9000 端口(可以通过 netstat -tl 命令查看端口状态)请求到来处理并返回...

假若某一时刻 php-cgi 进程繁忙 (或者说就只有一个 >_<),当然没有办法处理下一个请求。
nginx 可以通过负载均衡来增加 php-cgi 进程

# http context
upstream backend {
    server 127.0.0.1:9000 weight = 5 max_fails=0 fail_timeout=30s;
    server 127.0.0.1:9001 weight = 5 max_fails=0 fail_timeout=30s; 
}

# server context
location ~ \.php {
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_pass backend;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题