Trước hết, tôi xin lỗi nếu câu hỏi này đã được hỏi, ít nhất là tôi không thể tìm thấy bất cứ điều gì.
Dù sao đi nữa, tôi sẽ chạy một tác vụ cron cứ sau 5 phút. Tập lệnh tải 79 trang bên ngoài, mỗi trang chứa khoảng 200 giá trị mà tôi cần kiểm tra trong cơ sở dữ liệu (tổng cộng 15000 giá trị). Sẽ kiểm tra xem 100% giá trị có tồn tại trong cơ sở dữ liệu hay không và nếu có (giả sử tồn tại 10%) tôi sẽ sử dụng truy vấn CẬP NHẬT.
Cả hai truy vấn đều rất cơ bản, không có INNER, v.v. Đây là lần đầu tiên tôi sử dụng cron và tôi đã cho rằng mình sẽ nhận được phản hồi "không sử dụng cron cho việc này", nhưng máy chủ của tôi không cho phép daemon.
Truy vấn như sau:
CHỌN `id`, `date` TỪ `users` NƠI `name` = xxx
Nếu có sự trùng khớp, nó sẽ sử dụng truy vấn CẬP NHẬT (đôi khi có các giá trị bổ sung).
Câu hỏi đặt ra là liệu điều này có làm quá tải máy chủ mysql của tôi không? Nếu có, cách tiếp cận được đề xuất là gì? Nếu có vấn đề thì tôi đang sử dụng PHP.
Nếu bạn chỉ kiểm tra đi kiểm tra cùng một truy vấn thì có một số tùy chọn. Ngoài đỉnh đầu của tôi, bạn có thể sử dụngWHERE tên TRONG ('xxx','yyy','zzz','aaa','bbb'...v.v.)
. Ngoài ra, bạn có thể nhập tệp vào một bảng khác và có thể chạy truy vấn để thực hiện thao tác chèn/cập nhật.
gia hạn:
//Tôi cho rằng dữ liệu của bạn trông như thế này sau khi tải/phân tích tất cả các trang.
//nếu không thì cũng phải tương tự.
$dữ liệu = mảng(
'máy chủ 1'=>mảng('aaa','bbb','ccc'),
'máy chủ 2'=>mảng('xxx','yyy','zzz'),
'máy chủ 3'=>mảng('111','222', '333'));
//trong đó khóa là tên máy chủ và giá trị là một mảng tên.
//Tôi đề xuất sử dụng giao dịch cho việc này.
mysql_query("ĐẶT TỰ ĐỘNG CAM KẾT=0");
mysql_query("BẮT ĐẦU GIAO DỊCH");
//cập nhật trực tuyến thành 0 cho tất cả. Đây là lý do tại sao bạn cần giao dịch. Bạn sẽ đặt trực tuyến=1
//dành cho tất cả những người trực tuyến bên dưới.
mysql_query("CẬP NHẬT `bảng` ĐẶT `trực tuyến`=0");
foreach($data như $serverName=>$names){
$sql = "CẬP NHẬT `bảng` ĐẶT `online`=1,`server`='{$serverName}' NƠI `name` TRONG ('".implode("','", $names)."')";
$result = mysql_query($sql);
//nếu truy vấn không thành công, hãy khôi phục lại tất cả các thay đổi
nếu(!$kết quả){
mysql_query("CUỘN LẠI");
die("Lỗi MySQL với truy vấn: $sql");
}
}
mysql_query("CAM KẾT");
Tôi là một lập trình viên xuất sắc, rất giỏi!