Tôi cho rằng vấn đề của bạn là tập lệnh có thể thực thi trong một thời gian rất dài trước khi gửi truy vấn CẬP NHẬT đầu tiên.
Bạn nên kiểm tra giá trị wait_timeout trong my.cnf. Bạn có thể kiểm tra thời gian chờ đợi của mình bằng cách chạy truy vấn "HIỂN THỊ BIẾN;"
Bạn cũng có thể thử đoạn mã để kết nối lại:
if (!mysql_ping ($conn)) {
//here is the major trick, you have to close the connection (even though its not currently working) for it to recreate properly.
mysql_close($conn);
$conn = mysql_connect('localhost','user','pass');
mysql_select_db('db',$conn);
}
Kết hợp với mã của bạn nó sẽ là:
mysql_connect("localhost", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
$sql = mysql_query("SELECT id FROM db");
while ($data = mysql_fetch_assoc($sql)) {
if (!mysql_ping ()) {
//here is the major trick, you have to close the connection (even though its not currently working) for it to recreate properly.
mysql_close();
mysql_connect("localhost", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
}
$ids[] = $data['id'];
$content = file_get_contents("http://www.id.com/?id=$id");
if (stristr($content, "the id is ok man")) {
mysql_query("UPDATE db SET status = 'OK' WHERE id = '$id'");
}
}