Rumah > pangkalan data > tutorial mysql > Mengapakah pertanyaan MySQL saya tamat masa selepas 60 saat, walaupun `wait_timeout` adalah lebih tinggi?

Mengapakah pertanyaan MySQL saya tamat masa selepas 60 saat, walaupun `wait_timeout` adalah lebih tinggi?

Susan Sarandon
Lepaskan: 2024-11-27 05:07:13
asal
347 orang telah melayarinya

Why is my MySQL query timing out after 60 seconds, even though `wait_timeout` is much higher?

Pelayan MySQL telah hilang - 60 saat dari apa yang dijangkakan

Artikel ini membincangkan perkara yang menyebabkan pelayan MySQL melalui pertanyaan yang berlangsung 120 saat Isu yang tamat selepas 60 saat dan melontarkan ralat. Walaupun pertanyaan berjalan dengan baik, isu dalam skrip PHP menyebabkan ralat ini.

Simptom Masalah

  • Menjalankan pertanyaan melalui PHP SELECT SLEEP(120 masa tamat selepas 60 saat.
  • Menjalankan pertanyaan yang sama daripada klien MySQL berjaya dilaksanakan.
  • Tamat masa ialah 60 saat tetap setiap kali, mencadangkan ia mungkin isu persediaan dan bukannya had sumber.

Konfigurasi Sistem

  • Windows Server 2003
  • MySql 5.1.36-komuniti
  • PHP 5.3

Analisis

Selepas menyemak output SHOW VARIABLES, kami mendapati wait_timeout telah ditetapkan kepada 28800 (480 minit), tetapi ralat masih wujud. Ini menunjukkan bahawa tunggu_masa tamat bukanlah masalah.

Penyelesaian

Punca masalah ialah pilihan PHP mysql.connect_timeout. Pilihan ini digunakan bukan sahaja untuk tamat masa sambungan tetapi juga untuk menunggu respons pertama daripada pelayan. Memandangkan tempoh pertanyaan ditetapkan kepada 120 saat dan mysql.connect_timeout ditetapkan kepada 60 saat secara lalai, pelayan menutup sambungan selepas 60 saat, menyebabkan ralat.

Menyelesaikan isu ini dengan meningkatkan mysql.connect_timeout kepada sekurang-kurangnya 120 saat. Ini dicapai dengan kod berikut:

ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300); 
Salin selepas log masuk

Ini meningkatkan mysql.connect_timeout kepada 300 saat, mengelakkan penutupan sambungan sebelum waktunya sementara menunggu pelayan membalas.

Atas ialah kandungan terperinci Mengapakah pertanyaan MySQL saya tamat masa selepas 60 saat, walaupun `wait_timeout` adalah lebih tinggi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan