Czas updatu zależy od bardzo wielu czynników:
- połączenie sieciowe
- baza lokalna/zdalna
- typ tabeli (w MySQL to ENGINE - najszybciej zrobi na Memory)
- wielkości tabeli
- ilosci updatowych pól
- czy pola updatowane są w indeksach
- czy we where są pola z indeksów
- itp, itd. (nie chce mi się dalej wymyślać)
Musisz co sekundę wykonywać update?
tak.
Za mało informacji. Nie wiemy jaka baza, jaki rozmiar, jaki serwer, jak używasz dokładnie kodu, jak wywołujesz update etc.Nikt tutaj Ci nie wywróży nic.
sekunda i masz lagi? przecież jeśli nie masz tam wielkich struktur danych to to są milisekundy.
tak, ping rośnie z 20ms do 150-500ms
używam PDO/apache/xampp
funkcja wyglada następująco.
function SetPlayerAfk() {
include('pdo-connect.php');
$player = $Connect_Web->prepare('SELECT * FROM players WHERE account_id = :accountid and id = :id LIMIT 1');
$player->bindValue(':accountid', $_SESSION['logged'], PDO::PARAM_INT);
$player->bindValue(':id', $_COOKIE['ii_id'], PDO::PARAM_INT);
$player->execute();
foreach($player as $getplayer){
$afk = ("UPDATE players SET afk = ".time()." WHERE id = '".$getplayer['id']."' LIMIT 1 ");
// Prepare statement
$player_afk = $Connect_Web->prepare($afk);
// execute the query
$player_afk->execute();
$player_afk->closeCursor();
}
$player->closeCursor();
$player_afk->closeCursor();
$Connect_Web = null;
}
potem używam tego tak
if($_Request['cin']){
SetPlayerAfk();
}
javascript wykonuje plik php co 1 sekundę tym samym tworzy się ping bardzo wysoki.