Menamatkan Sambungan MySQL Dorman
Sambungan yang tidak terkira banyaknya kekal melahu untuk tempoh yang lama, sehingga 5 minit, menimbulkan kebimbangan yang ketara. Adakah mungkin untuk menamatkan atau menutup sambungan ini tanpa menggunakan perkhidmatan MySQL dimulakan semula? Walaupun mengekalkan sistem PHP lama yang menghalang sambungan penutupan semasa pelaksanaan pertanyaan, adakah nilai tamat masa dalam fail my.cnf perlu dikurangkan daripada 8 jam lalai?
Pembersihan Manual
ID Proses boleh digunakan untuk menamatkan sambungan secara manual menggunakan arahan KILL:
mysql> show full processlist; +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ | Id | User | Host | db | Command | Time | State | Info | +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ | 1193777 | TestUser12 | 192.168.1.11:3775 | www | Sleep | 25946 | | NULL | +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ mysql> kill 1193777;
Walau bagaimanapun, pendekatan ini mempunyai potensi kelemahan:
Pembersihan Automatik
Penyelesaian alternatif melibatkan konfigurasi pelayan MySQL dengan tamat masa yang lebih singkat untuk tunggu_masa tamat dan interaktif_masa tamat:
mysql> show variables like "%timeout%"; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | connect_timeout | 5 | | delayed_insert_timeout | 300 | | innodb_lock_wait_timeout | 50 | | interactive_timeout | 28800 | | net_read_timeout | 30 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | table_lock_wait_timeout | 50 | | wait_timeout | 28800 | +--------------------------+-------+ 9 rows in set (0.00 sec)
Tamat masa ini boleh ditetapkan menggunakan arahan berikut:
set global wait_timeout=3; set global interactive_timeout=3;
Adalah penting untuk diingat bahawa perubahan ini hanya menangani simptom dan bukan punca asas sambungan berterusan. Skrip PHP harus dikonfigurasikan dengan betul untuk menutup sambungan setelah selesai, dan pengumpulan sambungan oleh pelayan web harus dilumpuhkan.
Atas ialah kandungan terperinci Bolehkah saya menamatkan sambungan MySQL yang tidak aktif tanpa memulakan semula perkhidmatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!