Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z odczytem danych z MySQL
Daiszman
post 13.02.2020, 09:14:37
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
javafxdev
post 13.02.2020, 10:42:16
Post #2





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 27.10.2015

Ostrzeżenie: (0%)
-----


podeślij ten plik w którym zapytanie trwa do minuty
Go to the top of the page
+Quote Post
Daiszman
post 13.02.2020, 12:53:47
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

Ostrzeżenie: (10%)
X----


a jakie ustawienia dać w php.i.i i mysql?
Go to the top of the page
+Quote Post
javafxdev
post 13.02.2020, 12:54:42
Post #4





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 27.10.2015

Ostrzeżenie: (0%)
-----


ustaw na osiem
Go to the top of the page
+Quote Post
Daiszman
post 13.02.2020, 14:08:01
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

Ostrzeżenie: (10%)
X----


questionmark.gif
Go to the top of the page
+Quote Post
javafxdev
post 13.02.2020, 14:29:58
Post #6





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 27.10.2015

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
nospor
post 13.02.2020, 14:47:57
Post #7





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 02:23