PHP cli while(true) sleep(60) mysql

來源:互聯網
上載者:User
假設有一個 php cli 檔案,每2分鐘運行一次執行 mysql 資料寫入操作。

如果用 corntab 或者 mq 的話,每一次執行都要

  1. 建立 mysql 串連
  2. 執行批量寫入
  3. php 手動結束 mysql 串連(實際上 mysql 串連並沒有結束,只是 php 釋放而已)
  4. php 結束運行 釋放記憶體
  5. 此時 mysql connection 處理 sleep 狀態
  6. 2分種後,再次執行 1 ~ 5

指令碼每 2 分鐘一次,24小時下來,mysql 就會產生大量的 sleep connection,就算最佳化了 mysql 的 wait_timeout thread_cache_size 這些參數也沒有用是嗎?

如果是 while(true) 的話,php 使用 pconnect 只建立了一個 mysql 串連,只要 php 進程在運行就永不釋放 mysql connection 對嗎?

這樣是不是就能節省 mysql 串連數,從而減少 mysql 伺服器的壓力?

回複內容:

假設有一個 php cli 檔案,每2分鐘運行一次執行 mysql 資料寫入操作。

如果用 corntab 或者 mq 的話,每一次執行都要

  1. 建立 mysql 串連
  2. 執行批量寫入
  3. php 手動結束 mysql 串連(實際上 mysql 串連並沒有結束,只是 php 釋放而已)
  4. php 結束運行 釋放記憶體
  5. 此時 mysql connection 處理 sleep 狀態
  6. 2分種後,再次執行 1 ~ 5

指令碼每 2 分鐘一次,24小時下來,mysql 就會產生大量的 sleep connection,就算最佳化了 mysql 的 wait_timeout thread_cache_size 這些參數也沒有用是嗎?

如果是 while(true) 的話,php 使用 pconnect 只建立了一個 mysql 串連,只要 php 進程在運行就永不釋放 mysql connection 對嗎?

這樣是不是就能節省 mysql 串連數,從而減少 mysql 伺服器的壓力?

一個 cli 2分鐘運行一次又沒並發,只需要看資料庫讀的操作有沒有如果有就做讀寫分離就解決啦。最佳化 php 的 connection pooling 這個太難了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.