簡體   English   中英

服務器之間的PHP cURL問題,返回傳遞可能無法捕獲響應

[英]Issues with PHP cURL between servers, return transfer probably wont catch the response

我的行為很奇怪。

我正在為用戶托管一個跟蹤軟件,該軟件主要記錄移動流量。 現在,路徑如下:

1.我的客戶得到了一個php代碼片段以放入他的網站。

2.此代碼向我的服務器發送一個cURL帖子(基於預定義的帖子字段,例如:visiotr IP,useragent,host等)。

3.我的服務器記錄數據,並確定風險級別。

4.然后,它向客戶端服務器回復狀態。 也就是說,它將“ true”或“ false”發送回客戶端服務器。

5.客戶端服務器獲得響應,並決定要做什么(加載不同的HTML內容,重定向,阻止訪問者等)。

由於某種原因,我面臨的問題是,從客戶端服務器到服務器的所有請求都記錄並存儲在一個日志文件中,但是我的客戶端報告點擊丟失,就像服務器返回響應一樣,但他們的服務器無法收到這些響應或其他內容。

我可能注意到,每分鍾都有來自不同客戶端服務器以及每個客戶端本人的大量請求。

原因可能與CURL_RETURNTRANSFER沒有得到任何響應有關嗎? 或者,也許問題是cURL重載?

我真的不知道。 我的服務器運行非常快,並且僅使用其源的10%。

預先感謝您的想法。

您碰到了非常有問題的域-高負載服務器,問題可能出在很多地方,因此您將不得不花費時間來修復它,或者至少要部分修復。

首先,您應該了解實際情況,並查看以下簡化方案:

  1. 客戶端的php代碼嘗試打開與您服務器的連接,為此,它會通過網絡將一些數據發送到您的服務器
  2. 您的服務器(我想是apache)嘗試接受它,如果它有資源-請檢查apache配置中的最大連接屬性
  3. 如果服務器可以接受連接,它將嘗試創建新線程(或使用線程池中的一個)
  4. 線程啟動后,它將運行您的php腳本
  5. 您的php腳本做了一些工作,連接到數據庫並通過網絡發送回響應
  6. 客戶端等待直到來自p5的答案或由於超時而關閉連接

因此,您可能會遇到瓶頸:

  1. 網絡帶寬
  2. 最大打開連接數
  3. 線程池大小
  4. 腳本執行時間
  5. 最大數據庫連接數,表鎖,io等待時間
  6. 客戶超時

它不是可能發生問題並最終導致空卷曲響應的可能位置的完整列表。

從一開始,我建議您將日志記錄添加到兩個PHP代碼(客戶端和服務器)中,並將所有curl_error問題存儲在某個文本文件中,至少您會看到經常發生什么問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM