Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z odczytem danych z MySQL
Forum PHP.pl > Forum > Przedszkole
Daiszman
Witam , mam serwer msql i php w najnowszych wydaniach.
Serwer ma 16GB ramu 4 rdzenie i dyski ssd
W bazie mam 6 tyś wpisów. przy samym zapytaniu i wylistowaniu zapytań z bazy idzie płynnie, dodawanie do bazy też jest ok ale w jednym pliku który daj możliwość modyfikacji wierszy zapytanie trwa do minuty nim wypluje odpowiedź lub zdechnie zupełnie (zdycha na innej małej maszynie).
Myślałem że to wina skryptu PHP ale zainstalowałem na zewnętrznym hostingu i chodzi normalnie...

czy możecie mi podpowiedzieć czy w konfiguracji php mysql lub czegoś innego można usprawnić szybkość wykonania skryptu?
dodatkowo skrypt ma logowanie - takie proste bez niczego - ale po pewnym czasie wywala zalogowanego - czy da sie wydłużyć sesje od strony php?
javafxdev
podeślij ten plik w którym zapytanie trwa do minuty
Daiszman
a jakie ustawienia dać w php.i.i i mysql?
javafxdev
ustaw na osiem
Daiszman
questionmark.gif
javafxdev
Ogólnie już na początku jest źle bo wyciągasz wszystkich userów z bazy
  1. $query = 'SELECT * FROM users';
  2. $result = mysqli_query($conn, $query);
  3. while($user = $result -> fetch_assoc()){
  4. if($user['userName'] == $_SESSION['login'] && $user['permissionLevel'] < 2)
  5. header('Location: employee.php');
  6. }


powinno być:
  1. $query = 'SELECT * FROM users WHERE userName = ' . $_SESSION['login'];


przyspieszy to skrypt o tyle ile masz wpisów w bazie - czyli o jakieś 6 tysięcy razy

Do tego przekierowujesz niezalogowanego uzytkownika dopiero PO wyciągnięciu wszystkich innych z bazy:
  1. $query = 'SELECT * FROM users';
  2. $result = mysqli_query($conn, $query);
  3. while($user = $result -> fetch_assoc()){
  4. if($user['userName'] == $_SESSION['login'] && $user['permissionLevel'] < 2)
  5. header('Location: employee.php');
  6. }
  7. if(!isset($_SESSION['loggedIn']) || $_SESSION['loggedIn'] == false)
  8. header('Location: login.php');
  9.  
  10.  


co też oczywiście jest błędem bo po co wyciągać wszystkich userów po to zeby potem przekierować niezalogowanego na stronę login.php?

Do tego:

  1. <link rel="stylesheet" href="style.css?v=<?php echo rand(1, 1000000) ?>">


Przed czym to ma zabezpieczać przed cachowaniem wyników w przeglądarce? a jak trafisz na taką samą liczbę?

Ta pętla też jest ciekawa
  1. while($numOfUsers > 0 and $k <= $numOfUsers){
  2.  
  3. $query = 'SELECT * FROM users WHERE id > '.$currWorkerId.' ORDER BY id ASC';
  4. $worker = mysqli_fetch_array(mysqli_query($conn, $query));
  5. $currWorkerId = $worker['id'];
  6. $k++;
  7. echo '<option value="'.$worker['userName'].'"'; if($doc['workerAsigned'] == $worker['userName']) echo'selected'; echo ' >'.$worker['userName'].'</option>';
  8. }

zapytanie w pętli...
nospor
Ja to tylko przeniose na do wlasciwego dzialu bo to nie jest problem serwera www tylko kiepskiego skryptu.

A na przyszlosc podawaj plik w temacie a nie na PW. zamykasz sie na pomoc jednej osoby. Po co wiec w ogole zakladasz temat na forum?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.