1. 程式人生 > >本地服務CURL請求本地另一個服務API返回超時/或無返回

本地服務CURL請求本地另一個服務API返回超時/或無返回

入職之後一直在忙,終於有時間整理一波最近踩到的坑。

起因:

專案是微服務架構,一個專案對外提供API,新的專案呼叫API獲得資料。於是就在本地搭建了兩個服務。配置了兩個虛擬域名,指向兩個專案,當然我本地是windows+nginx。意外就在這個時候發生了,我在新開發的專案中,呼叫另一個專案的API時,總是CURL超時,如果CURL不設定超時的話就會造成NGINX卡死。百思不得其解。

問題成因:

後來瞭解到原來PHP+NGINX在windows下是不支援併發的?(參考文章在這裡

這個我並不敢十分的肯定,我只是覺得能理解這個東西,我們看nginx的配置檔案的話,會更清楚一些,到底發生了什麼:

fastcgi_pass 都綁定了9000埠

所以兩個服務就會有一個埠被佔用,無法返回訊息。

解決方案:

第一是要把服務繫結到其他沒被佔用的埠,比如9009,然後切換到php-cgi所在的目錄,再單獨啟動一個php-cgi程序,去監聽這個個埠

好的,完美解決。