Windows下PHP使用curl请求本地URL超时

Uiaoin 2019-07-30 4556

问题背景:

本地服务由Nginx和php提供,有两个本地域名,分别为test.com、api.test.com,需要test.com通过curl向api.test.com发起请求获取数据,结果一直超时。

网上查找发现是由以下原因造成的:

Nginx处理PHP请求的端口都在9000,Windows下Nginx+php的环境不支持并发请求,当同时访问多个域名,并且同时指向你本地服务的时候,就不支持并发了。(Linux、Mac没有这个问题)


解决办法:很简单,只需要将两个域名对应的Nginx处理请求端口改为不同即可,具体如下:

1、比如test.com用的9000端口,我们将api.test.com改为9001。打开vhosts.conf中

  1. location ~ \.php(.*)$ {
  2. fastcgi_pass 127.0.0.1:9001;
  3. ......
  4. }

里面的

  1. fastcgi_pass 127.0.0.1:9000;

改为:

  1. fastcgi_pass 127.0.0.1:9001;

2、重启WNMP服务,新建一个php-cgi进程,新进程端口须与上一步修改的相同:

打开cmd,切换到PHP安装路径下(对于没有配置PHP环境变量的),执行:

  1. php-cgi.exe -b 127.0.0.1:9001

打开任务管理器可以看到有两个正在运行的php-cgi.exe。

在此基础上,就会发现test.com请求api.test.com不会再超时了!


参考博客:https://blog.csdn.net/qq_27517377/article/details/86022091,https://www.cnblogs.com/dcb3688/p/4608003.html

加载更多