2016-01-08 102 views
0

當我在crontab(bashscript)中運行報告任務(從mysql獲取淨銷售數據)時,我建立了一個到mysql的連接並獲取所需的數據。crontab是否讓mysql連接保持打開狀態?

這是否讓mysql連接處於打開狀態,或者所有連接都在作業完成時關閉?

更新 - 我使用bash腳本連接到mysql。

+2

您能否更新您的問題並詳細說明您如何建立連接(運行php腳本?,bash腳本?,提供剝離敏感數據的代碼示例) –

+0

最有可能不是。 Crontab執行一個程序,但它不會讓程序繼續運行。通過在MySQL終端中運行SHOW PROCESSLIST,您可以始終檢查有多少活動連接。 – Mjh

+2

問題*「crontab是否讓mysql連接打開?」*是完全錯誤的。 crontab只是一個列表,而不是代碼,它什麼都不做。更甚者,cron守護進程(讀取crontab的守護進程)除了啓動crontab中描述的其他程序之外,沒有其他任何功能。 這些程序有責任關閉它們打開的連接。但是,一旦程序退出,無論是「mysql」客戶端還是其他任何程序,它所打開的所有連接都會自動關閉。 – axiac

回答

3

在基本場景中,當bash腳本中的mysql客戶端結束運行時,MySQL連接將被關閉。

如果您正在bash腳本中運行mysql命令行Linux客戶端,那麼bash通常會等待mysql進程退出,然後再繼續腳本的結尾。

有些方法可以在bash腳本的生命週期之外堅持進程,但是您沒有提及在您的問題中使用這些方法。

如果您使用的是具有關閉功能的mysql庫 - 大多數MySQL庫在api中都有這個,那麼您應該使用它。雖然默認的流程行爲可能會爲您打開打開的連接,但它有助於避免在代碼中再次需要關閉資源的習慣,因爲這樣可以提高可伸縮性,並且還可以向其他開發人員通知您的預期行爲。

+0

你給出錯誤的建議。如果您正在開發可伸縮應用程序,那麼您希望儘可能高效。關閉連接**不是**高效的。這不適用於crontab,但它確實適用於例如'php-fpm' - 你永遠不想關閉與MySQL的連接。如果這樣做,那麼每個請求都會處理TCP握手和MySQL身份驗證+授權。這是低效的。 PHP程序員很少需要擔心清理東西,而當他們清理東西時 - 它會讓所有事情變得更慢。 – Mjh

+0

@Mjh我只需要知道連接是否在bash腳本中關閉。 – abipc

+1

@abipc - 它們是。如果腳本在完成後退出,那麼程序===死了,請不要關閉連接。根據註釋,您可以通過在您的MySQL終端中執行SHOW PROCESSLIST來驗證**行爲。 – Mjh

相關問題