php實(shí)現(xiàn)訪問mysql的查詢超時(shí)方法:1、 修改客戶端,比如mysqli的query代碼,加入定時(shí)器,超時(shí)則返回;2、修改mysql中的vio代碼,因?yàn)閙ysql的網(wǎng)絡(luò)處理底層都是經(jīng)過vio的操作。
【相關(guān)學(xué)習(xí)推薦:mysql教程】
php實(shí)現(xiàn)訪問mysql的查詢超時(shí)方法:
在libmysql中, 是提供了mysql_opt_read_timeout設(shè)置項(xiàng)的, 并且libmysql中提供了設(shè)置相關(guān)設(shè)置項(xiàng)的api, mysql_options:
目前只有mysqli支持
<?php$mysqli = mysqli_init();$mysqli->options(11 /*mysql_opt_read_timeout*/, 1);$mysql->real_connect(*);不過, 因?yàn)樵趌ibmysql中有重試機(jī)制(嘗試一次, 重試倆次), 所以, 最終我們設(shè)置的超時(shí)閾值都會(huì)三倍于我們設(shè)置的值.
也就是說, 如果我們設(shè)置了mysql_opt_read_timeout為1, 最終會(huì)在3s以后超時(shí)結(jié)束. 也就是說, 我們目前能設(shè)置的最短超時(shí)時(shí), 就是3秒…
1. 修改客戶端,比如 mysqli 的 query 代碼,加入定時(shí)器,超時(shí)則返回
2. 修改 mysql 中的vio代碼,因?yàn)閙ysql的網(wǎng)絡(luò)處理底層都是經(jīng)過vio的操作
想了解更多相關(guān)學(xué)習(xí),敬請關(guān)注php培訓(xùn)欄目!