Được rồi, tôi đã tìm thấy giải pháp .. Cảm ơn Will và PRR (đồng nghiệp của tôi).
Tôi không thể bắt đầu một chuỗi mới trên mỗi truy vấn, vì đây là một ứng dụng thời gian thực, ứng dụng này sẽ xử lý hơn 1000 thư mỗi giây .. (dù sao, cảm ơn R .. cho ý tưởng).
Ngoài ra, không thể ngắt kết nối thông qua thư viện, cũng như hủy / hủy truy vấn, vì sự cố nằm trong máy chủ DB ..
Và đây là một giải pháp brute-force, nhưng vẫn tốt hơn nhiều _EXIT( FAILURE )
:Đây là câu hỏi liên quan: "Cách buộc đóng cửa socket trên Linux? "
- vì vậy, tôi vừa đóng ổ cắm bằng lệnh gọi hệ thống.
LƯU Ý quan trọng :(cảm ơn Will) - Hóa ra, trình bao bọc thư viện MySQL của chúng tôi có cờ "fail-safe", vì vậy trên ổ cắm đã đóng (hoặc lỗi nghiêm trọng khác), nó cố gắng "giải quyết" vấn đề, vì vậy nó mở lại ổ cắm , tự nó, trong trường hợp của tôi. Vì vậy, tôi vừa tắt tùy chọn này và hiện tại mọi thứ đều ổn - quá trình thực thi bị chấm dứt vì một ngoại lệ - đây là cách "nhẹ nhàng" nhất để thực hiện việc này.
Tất nhiên, điều này nên được thực hiện thông qua một chuỗi khác - a chẳng hạn như bộ đếm thời gian.
CHỈNH SỬA: Thời gian chờ thực sự hoạt động đối với các phiên bản sau 5.0.25. Tuy nhiên, ít nhất trên RHEL4 và RHEL5, thời gian chờ tăng gấp ba vì một số lý do! Ví dụ:nếu một số thời gian chờ được đặt thành 20 giây, thời gian chờ thực là ~ 60 giây ..
Ngoài ra, một điều quan trọng khác là những thời gian chờ này (như bất kỳ tùy chọn nào khác) PHẢI được đặt sau mysql_init
và trước đây mysql_connect
hoặc mysql_real_connect
.