PDO Connect Timeout: Penyelesaian Terperinci
Pengenalan:
Menyambung ke pangkalan data kadangkala boleh mengambil masa jumlah masa yang berlebihan disebabkan oleh pelbagai faktor seperti isu rangkaian atau ketersediaan pelayan. Ini boleh mengecewakan terutamanya apabila bekerja dengan sistem Pengeluaran.
Tetapan Atribut PDO:
OP cuba menetapkan tamat masa menggunakan PDO::setAttribute() dengan atribut PDO::ATTR_TIMEOUT , tetapi ia tidak menyelesaikan isu tersebut. Ini kerana tetapan tamat masa digunakan pada pelaksanaan pernyataan PDO, bukan pada penubuhan sambungan.
Penyelesaian Optimum:
Penyelesaian yang disyorkan untuk menetapkan tamat masa sambungan adalah dengan memberikan nilai tamat masa sebagai parameter konfigurasi semasa pemulaan objek PDO. Ini boleh dicapai dengan menentukan PDO::ATTR_TIMEOUT dalam tatasusunan pilihan pembina.
Kod Contoh:
Kod berikut menunjukkan cara untuk menetapkan tamat masa sambungan 5 saat untuk MySQL sambungan pangkalan data:
<code class="php">$DBH = new PDO( "mysql:host=$host;dbname=$dbname", $username, $password, array( PDO::ATTR_TIMEOUT => 5, // in seconds PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ) );</code>
Dengan menetapkan PDO::ATTR_ERRMODE kepada PDO::ERRMODE_EXCEPTION, sebarang ralat pangkalan data atau tamat masa akan mencetuskan PDOException, yang boleh ditangkap dan dikendalikan dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimana untuk menetapkan tamat masa sambungan untuk PDO dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!