Skrip PHP dengan PDO Menghadapi Ralat "MySQL Server Has Gone Away"
Skrip yang menjalankan tugas setiap malam menghadapi isu di mana PDO menyediakan kenyataan gagal dengan ralat "MySQL server has gone away" selepas beberapa pelaksanaan yang berjaya. Punca isu ini selalunya terletak pada melebihi saiz paket maksimum yang dibenarkan yang ditetapkan untuk MySQL.
Penyelesaian: Melaraskan Konfigurasi Pelayan
Untuk menyelesaikan ralat, adalah perlu untuk melaraskan tetapan max_allowed_packet dalam fail konfigurasi MySQL (my.ini). Tetapan ini menentukan saiz maksimum paket yang boleh dikendalikan oleh pelayan. Dalam senario yang diberikan, isu mungkin timbul apabila cuba memasukkan BLOB lebih besar daripada saiz yang dibenarkan.
Mesej Ralat dan Output Logger
Apabila isu ini berlaku, sisi klien memaparkan mesej ralat "Pelayan MySQL telah hilang." Selain itu, log pelayan mungkin mengandungi ralat berikut jika pengelogan ralat didayakan:
Error 1153 Got a packet bigger than 'max_allowed_packet' bytes
Pelarasan Konfigurasi
Untuk membetulkan isu ini, tentukan saiz yang terbesar BLOB yang akan dimasukkan dan tetapkan max_allowed_packet dalam my.ini dengan sewajarnya. Sebagai contoh, jika saiz BLOB terbesar dianggarkan 200MB, konfigurasi boleh dilaraskan seperti berikut:
[mysqld] ... max_allowed_packet = 200M ...
Atas ialah kandungan terperinci Mengapakah skrip PHP saya menggunakan PDO terus mendapat ralat 'Pelayan MySQL telah hilang' selepas beberapa pelaksanaan yang berjaya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!