Tôi gặp sự cố khi sử dụng lớp mysqli trong PHP và tôi không thể tìm thấy câu trả lời ở bất kỳ đâu.PHP mysqli reconnect problem
Trong tập lệnh của tôi, một lớp sẽ tạo kết nối mysqli mà nó sử dụng trong suốt các chức năng của nó. Sau đó, kịch bản này dĩa. Kết nối được sử dụng bởi các trẻ em là tốt, nhưng tôi đang chạy vào vấn đề kết nối được đóng lại (MYSQL Server Has Gone Away) trong phụ huynh khi các em chết.
Trước khi chuyển sang mysqli (chỉ sử dụng mysql), tôi đã gọi mysql_ping để đảm bảo rằng kết nối db đã có trước khi thực hiện truy vấn trong tiến trình cha. Mysqli có một chức năng ping tương tự NHƯNG nó không thực sự kết nối lại nếu kết nối đã biến mất. Tôi đã thử sử dụng mysqli.reconnect = ON thiết lập chung không có may mắn (sử dụng php.ini và ini_set).
Chức năng php mysql_connect cho phép bạn lấy kết nối đã tồn tại, vì vậy nếu tôi đang sử dụng mysql thay vì mysqli, tôi có thể sử dụng lại kết nối đó ngay sau khi quá trình được chia nhỏ. NHƯNG mysqli dường như không có bất kỳ chức năng nào như vậy ...
Điều duy nhất tôi có thể làm là gọi mysqli-> ping() và nếu điều đó trả về false thì hãy kết nối lại với cơ sở dữ liệu trong phụ huynh. Điều này là cực kỳ không hiệu quả, và tôi sẽ tìm ra cách để làm điều đó một cách chính xác với mysqli (và không cần phải kết nối lại thủ công) mà phải thay đổi trở lại mysql ..
Bất cứ đề nghị?
Điều đó đã hiệu quả. Tôi đã không nhận ra rằng bạn không thể sử dụng ini_set để sửa đổi biến này, và là thiên tài tôi, tôi đã thêm dòng vào php.ini trước đây, không biết rằng đã có một mysli.reconnect = Tắt dòng tiếp tục xuống tập tin. Nhưng loại bỏ một và chỉ sử dụng mysqli.reconnect làm việc và thực hiện mysqli-> ping() thực hiện giống như mysql_ping. Cảm ơn đã giúp đỡ! –