簡體   English   中英

Mysql PHP 在長腳本期間斷開連接

[英]Mysql PHP dropping connection during long script

我遇到了一個問題,我似乎無法弄清楚是否涉及由於數據庫連接失敗而無法完成的長 php 腳本。

我使用的是 PHP 5.5.25 和 MySQL 5.6.23,帶有 mysqli 接口。

該腳本使用 TCPDF 庫創建財務報告的 PDF。 總的來說它運行良好。 但是,當數據集變大時(報告可以迭代多個帳戶以創建包含所有符合條件的帳戶的多頁報告)它會在大約 30 秒后失敗(不完全是 30,有時會多幾秒)郵票)。 它似乎可以正常運行大約 25-35 個循環,但超過這個循環會導致問題。

我認為這不是超時問題(盡管它肯定可能是)。 我已將 PHP 設置為相當大量的資源來處理此問題。

max_execution_time = 600 
memory_limit = 2048M

該腳本確實以每秒數百次的查詢對數據庫造成了很大的打擊。 盡我所能從數據庫的一些統計數據中得知,一次只有幾個活動連接,所以看起來我沒有接近默認設置 150 個最大連接。

這是我最終因大數據集失敗而得到的錯誤。

警告: mysqli::mysqli(): (HY000/2002): 無法在...中分配請求的地址

致命錯誤:數據庫連接失敗:無法在...中分配請求的地址

有沒有人對可能導致腳本最終無法連接到數據庫並無法完成的原因有任何建議? 我已經嘗試尋找一些答案,但到目前為止我發現的關於數據庫連接失敗的幾乎所有內容都根本無法連接,而不是無法在大型腳本中途連接。

提前感謝您的任何建議。

我不認為這是超時的問題

你應該知道

這個問題在執行開始后這么長時間才出現,這似乎很奇怪。 檢查超時是什么會這么難嗎? 嘗試改變它? 向您的代碼添加一些日志記錄?

您應該檢查的另一件事是腳本是打開單個連接並重用它還是不斷打開新連接。

如果沒有看到代碼,就很難確定,但是一個腳本每秒執行數百個查詢持續數十秒,這聽起來像是 SQL 和 PHP 邏輯之間的划分沒有經過深思熟慮。

暫無
暫無

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

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