Terdapat pernyataan SQL yang menyambung ke mysql dalam skrip Apabila dilaksanakan, pelayan mysql membuka utas baharu (atau proses?) Untuk memproses sambungan selepas skrip tamat, adakah ia memutuskan sambungan daripada PHP (atau apache? ). Apakah sambungan panjang mysql itu? Tiba-tiba saya rasa seperti tidak faham apa-apa. . .
Jika anda ingin menutup rangka kerja secara manual, tulis kod penutup dalam pemusnah kelas Ia biasanya dirangkumkan Jangan risau ia biasanya disambungkan ke mysql dalam mod tunggal
1.mysql memulakan proses untuk mengendalikan transaksi yang sepadan
2. Putuskan sambungan dari proses httpd apache PHP berjalan dalam mod mod apache dan memajukan permintaan ke mod panggilan PHP
PHP dijalankan dalam mod modul apache Proses httpd Sederhana
3. Kelemahan pautan pendek: Buat sambungan, dan selepas program dijalankan, pautan ke mysql akan terputus secara automatik. Jadi berapa kali PHP dilaksanakan, akan terdapat banyak proses penciptaan dan pelepasan sedemikian. Kerap mencipta dan melepaskan sambungan menggunakan sumber CPU.
Tidak mungkin untuk mengekalkan sambungan yang panjang dari PHP sahaja, tetapi ada cara untuk mencapainya.
Jika anda menjalankan PHP dalam mod Apache+php_module, anda boleh mewujudkan pautan kekal melalui mysql_pconnect, tetapi pautan ini dikekalkan oleh Apache (mysql_pconnect tidak dapat mengekalkan sambungan panjang di bawah nginx+fpm, seperti yang dijelaskan oleh dokumentasi rasmi)
nginx+fpm fpm biasanya ditetapkan kepada statik Melalui sambungan PDO, sambungan yang panjang boleh ditetapkan apabila menyambung ke pangkalan data, dan setiap fpm mengekalkan pautan kekal. Walau bagaimanapun, masih perlu untuk menilai bilangan proses FPM dan bilangan maksimum sambungan pangkalan data berdasarkan sistem Jika terdapat terlalu sedikit permintaan PHP, sebilangan besar sambungan terbiar akan membazirkan sumber (mysql wait_time perlu dikonfigurasikan dengan sewajarnya. ). Jika terdapat terlalu banyak permintaan PHP, terlalu banyak proses FPM akan melebihi had pangkalan data Jumlah maksimum sambungan akan menyebabkan terlalu banyak sambungan. .
Secara amnya, php akan membuat pautan pendek setiap kali ia melaksanakan sql Apabila pelaksanaan selesai, php akan memutuskan sambungan (mungkin selepas tamat masa, MySQL akan memutuskan sambungan)
.Pada masa kini, cara biasa untuk mengurangkan overhed IO ini adalah dengan mewujudkan kumpulan sambungan pangkalan data, mengekalkan bilangan sambungan tertentu dan terus mendapatkan sumber yang berkaitan apabila menggunakannya.
Jika anda menggunakan php asal, anda perlu menutupnya secara manual. Rangka kerja biasanya dibungkus dan boleh digunakan terus