Здравствуйте. Такая проблема, есть Cron файл) Такого вдида Код (Text): $servers = dbquery("SELECT * FROM amx_servers"); while($r=dbarray_fetch($servers)) { list( $aipi_adr_obrez, $port_adr ) = explode(':', $r[server_ip]); $ipv4 = gethostbyname($aipi_adr_obrez); $serv=serverInfo("$ipv4:$port_adr"); //Определение когда снивать VIP у серверов $vip_proverka = dbquery("SELECT * FROM amx_servers WHERE `server_id`='".$r['server_id']."'"); $vip_check=dbarray_fetch($vip_proverka); $vip_times = date('Y-m-d G:i:s'); if($vip_times >= $vip_check['vip_time']){ $vip_zapis_robokassa = dbquery("UPDATE `amx_servers` SET `server_vip`='0', `vip_time`='0' WHERE `server_id`='".$r['server_id']."'"); }else{ } if($serv['status']==''){ }else{ $proverka_map = dbquery("SELECT * FROM amx_mapsdownload WHERE `map_name`='".$serv['map']."' AND `version`='".$serv['version']."_".$serv['game']."' "); //Вывод if (mysql_num_rows( $proverka_map) == 0) { $result_map = mysql_query("INSERT INTO amx_mapsdownload (`map_name`, `version`) VALUES ('".$serv['map']."', '".$serv['version']."_".$serv['game']."')"); } } //Сбор информации if($serv['status']==''){ $result = dbquery("UPDATE amx_servers SET `server_name`='Server Is OFF Line', `server_status`='0', `server_map`='', `server_players`='0', `server_maxplayers`='0' WHERE server_id='".$r['server_id']."'"); continue;} $name_filtered_server = name_filtered($serv['name']); //Фильтр данныйх $name = addslashes($name_filtered_server); //Хэш данных фильтрация. $result = dbquery(" UPDATE amx_servers SET server_name = '".$name."', server_map = '".$serv['map']."', server_windows = '".$serv['os']."', server_ping = '".$serv['ping']."', server_players = '".$serv['players']."', server_game='".$serv['version']."_".$serv['game']."', server_maxplayers = '".$serv['max_players']."', server_vac = '".$serv['vac']."', server_status = '1' WHERE server_id='".$r['server_id']."' "); if($result) {echo "<font color='green'>Даные сервера с порядковым ".$r['server_id']." внесены в базу данных</font>";} else {echo "<font color='red'><b>Ошибка</b>, данные сервера с порядковым ".$r['server_id']." не были внесены в БД</font>";} echo "<br>"; } $date_proverka = date("d-m-Y: G:i:s",time()); // запоминаем дату $result = dbquery("UPDATE amx_servers SET server_date_cron = '".$date_proverka."'"); Раньше он обновлял информацию в базе данных. Сейчас же в базе околок 19 000 записей. И он просто не хочет онбновлять их. Идет обновления, потом система пишет что ответ не получен и не чего не обновляется. Подскажите, как решить для такой большой базы:?
19000 записей это не много и не повод спотыкаться, если это вызывает проблему, то повод задуматься: а правильно ли я поступаю? Сильно не всматривался, но то, что дважды выбирается из одной и той же таблицы, сначала все, а потом "цучуть" - это странно.
На этой строке, наверное Код (PHP): $result = dbquery("UPDATE amx_servers SET server_date_cron = '".$date_proverka."'"); ? Это действительно необходимо обновлять дату проверки во всех записях? Недавно замечал, что UPDATE работает очень медленно даже для 2-3 записей, а тут 19K.
+ в SQLite тоже заметил с запуском бд sqlite_open() c SQLiteDatabase() скорость обновление заметно увеличилась Добавлено спустя 22 секунды: PDO не пробывали?
Убрал этот запрос, все равно базу не обновляет. PDO не пробовал. Да и не пойму как. Чет мудрено там все. Добавлено спустя 14 минут 37 секунд: Хотя, убрав запрос Код (Text): $result = dbquery("UPDATE amx_servers SET server_date_cron = '".$date_proverka."'"); И сделав его таким UPDATE amx_servers SET server_name = '".$name."', server_map = '".$serv['map']."', server_windows = '".$serv['os']."', server_ping = '".$serv['ping']."', server_players = '".$serv['players']."', server_game='".$serv['version']."_".$serv['game']."', server_maxplayers = '".$serv['max_players']."', server_vac = '".$serv['vac']."', server_date_cron = '".$date_proverka."', server_status = '1' WHERE server_id='".$r['server_id']."' "); --------------------------------------------------- Все пошло обновляться. Спасибо большое. Но все же думаю переделать файл крона. Ведь значений в базе все больше и больше