mysql配置查詢超時 為MySQL設定查詢超時

2021-10-19 00:08:59 字數 1577 閱讀 5791

昨天有人在群裡問, mysql是否可以設定讀寫超時(非連線超時), 如果可以就可以避免一條sql執行過慢, 導致php超時錯誤. 這個, 其實可以有. 只不過稍微要麻煩點.

首先, 在libmysql中, 是提供了mysql_opt_read_timeout設定項的, 並且libmysql中提供了設定相關設定項的api, mysql_options:

int stdcall

mysql_options(mysql mysql,enum mysql_option option, const void *arg)

dbug_enter(「mysql_option」);

dbug_print(「enter」,(「option: %d」,(int) option));

switch (option) 但是因為mysqli並沒有匯出這個常量, 所以我們需要通過檢視mysql的**, 得到mysql_opt_read_timeout的實際值, 然後直接呼叫mysql_options:

enum mysql_option

mysql_opt_connect_timeout, mysql_opt_compress, mysql_opt_named_pipe,

mysql_init_command, mysql_read_default_file, mysql_read_default_group,

mysql_set_charset_dir, mysql_set_charset_name, mysql_opt_local_infile,

mysql_opt_protocol, mysql_shared_memory_base_name, mysql_opt_read_timeout,

mysql_opt_write_timeout, mysql_opt_use_result,

mysql_opt_use_remote_connection, mysql_opt_use_embedded_connection,

mysql_opt_guess_connection, mysql_set_client_ip, mysql_secure_auth,

mysql_report_data_truncation, mysql_opt_reconnect,

mysql_opt_ssl_verify_server_cert

可以看到, mysql_opt_read_timeout為11.

現在, 我們就可以設定查詢超時了:

$mysqli = mysqli_init();

$mysqli->options(11 /mysql_opt_read_timeout/, 1);

$mysql->real_connect(***);

不過, 因為在libmysql中有重試機制(嘗試一次, 重試倆次), 所以, 最終我們設定的超時閾值都會三倍於我們設定的值.

也就是說, 如果我們設定了mysql_opt_read_timeout為1, 最終會在3s以後超時結束. 也就是說, 我們目前能設定的最短超時時, 就是3秒…

雖說大了點,, 不過總比沒有好, 呵呵

檢視mysql設定超時 mysql設定查詢超時方法

文章來介紹了自定義mysql查詢超時的時間長度,下面我們來看看詳細的設定方法。首先,在libmysql中,是提供了mysql opt read timeout設定項的,並且libmysql中提供了設定相關設定項的api,如下 mysql options int stdcall mysql optio...

mysql配置慢查詢 MYSQL慢查詢配置

mysql慢查詢配置 1.慢查詢有什麼用?它能記錄下所有執行超過long query time時間的sql語句,幫你找到執行慢的sql,方便我們對這些sql進行優化.2.如何開啟慢查詢?首先我們先檢視mysql伺服器的慢查詢狀態是否開啟.執行如下命令 我們可以看到當前log slow queries...

原創 PHP訪問MySQL查詢超時處理

分類 linux freebsd server mysql phpquery 擴充套件資料庫 優化php連線mysql主要是使用mysql提供的 libmysqlclient 的客戶端庫,同時也延伸出來 mysql 和 mysqli 兩套php的擴充套件,相對來說 mysqli 比 mysql 更好...