Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][MySQL][PHP] Optymalizacja i sprawdzenie skryptu, Dziwne wyniki po uruchomieniu skryptu
nikos
post
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 30.03.2009

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


Witam!
Mam skrypt, który aktualizuje dane z jednej bazy MySQL z drugą.

Po zrobieniu testu na zamianie 6 rekordów w jednej bazie są one zmieniane w drugiej. Ale:

Ogólna ilość dostępnych i niedostępnych produktów zmienia się o 8 zamiast o 6?

Ogólnie pobieram rekordy gdzie stan jest <3 i w drugiej bazie wyłączam je avaiblable = 0
A potem sprawdzam rekordy które są >2 i włączam za pomocą avaiblable = 1


  1. <?php
  2. header('Content-Type: text/html; charset=utf-8');
  3. ini_set( 'display_errors', 'On' );
  4. error_reporting( E_ALL );
  5. // serwer 1
  6. $servername1 = "localhost";
  7. $username1 = "root";
  8. $password1 = "";
  9. $dbname1 = "sklep";
  10. //serwer 2
  11. $servername2 = "localhost";
  12. $username2 = "root";
  13. $password2 = "";
  14. $dbname2 = "test";
  15.  
  16. $connect1 = mysqli_connect($servername1, $username1, $password1, $dbname1);
  17. $connect2 = mysqli_connect($servername2, $username2, $password2, $dbname2);
  18.  
  19.  
  20. $query1 = "SELECT * FROM `sklep_towary` WHERE STAN < 3";
  21. $query2 = "SELECT * FROM `sklep_towary` WHERE STAN > 2";
  22.  
  23.  
  24. $result1 = mysqli_query($connect1, $query1);
  25. $result2 = mysqli_query($connect1, $query2);
  26.  
  27. if(mysqli_num_rows($result1) > 0){
  28. while($row = mysqli_fetch_assoc($result1))
  29. { $indeks = $row['INDEKS'];
  30. $stan = $row['STAN'];
  31. $zapytanie = "UPDATE dimensions_available_phones SET avaiblable = 0 WHERE subiekt_id ='$indeks' " or die(mysql_error());
  32. $wynik = mysqli_query($connect2, $zapytanie);
  33.  
  34. }
  35. if($wynik){
  36. echo'Wyłączono';
  37. }
  38. }
  39. if(mysqli_num_rows($result2)>0){
  40. while($row = mysqli_fetch_assoc($result2)){
  41. $indeks = $row['INDEKS'];
  42. $stan = $row['STAN'];
  43. $zapytanie2 = "UPDATE dimensions_available_phones SET avaiblable = 1 WHERE subiekt_id ='$indeks' " or die(mysql_error());
  44. $wynik2 = mysqli_query($connect2, $zapytanie2);
  45. }
  46.  
  47. }
  48.  
  49. if($wynik2){
  50. echo 'Włączono';
  51. }
  52.  
  53.  
  54.  
  55. ?>


Dodam, że skrypt trochę długo się wykonuje i proszę o wskazówki jak można by było go zmodyfikować.
Oto test:
  1. UPDATE sklep_towary SET STAN = 5 WHERE INDEKS IN (12047,
  2. 08824,
  3. 08578,
  4. 13604,
  5. 15846,
  6. 17870)


i to daje
  1. SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 0 1203
  2. SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 1 1486

i dalej jak uruchomię na pierwszej bazie
  1. [SQL]
  2. UPDATE sklep_towary SET STAN = 0 WHERE INDEKS IN (12047,
  3. 08824,
  4. 08578,
  5. 13604,
  6. 15846,
  7. 17870)

[/SQL]

Dostaje
  1. SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 0 1211
  2. SELECT * FROM `dimensions_available_phones` WHERE avaiblable = 1 1478

Pozdrawiam

Ten post edytował nikos 19.07.2017, 13:03:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nikos
post
Post #2





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 30.03.2009

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


Cytat(nospor @ 19.07.2017, 14:09:55 ) *
No a nie jest tak, ze w tabeli drugiej masz kilka rekordow dla ktorych subiekt_id wskazuje na ten sam index?

Właśnie tak jest! Tego bym się nie spodziewał!
Dzięki

Czy na pierwszy rzut oka widziałbyś jakąś modyfikację aby poprawić szybkość obciążenie bazy?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.10.2025 - 03:21