Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] długotrwały update
Forum PHP.pl > Forum > Przedszkole
motor
Witam chcę zaktualizować ok 8 000 produktów , wsad produktów to kilka sekund a jeśli chcę to zrobić poprzez
  1. <?php
  2. $query = "UPDATE
  3. ?>


Trwa to i trwa serwer lokalny się zapycha i wolno chodzi jak by coś w pamięci siedziało , czy jest jakieś rozwiązanie co robię źle
nevt
no to pokaż co robisz. skąd mamy wiedzieć czy robisz dobrze czy źle, jak nie pokazałeś kodu? pokaż pełen kod tego tego UPDATE i pokaż strukturę tabeli na której go wykonujesz (SHOW CREATE TABLE ...)
motor
Jasna sprawa , chcę zrobić update z pliku xml tego co mam w bazie

  1. <?php
  2. $katalog = simplexml_load_file('../plik.xml');
  3.  
  4.        foreach($katalog->producenci->producent as $key => $value){    
  5.  
  6.    $nazwa_prod= "" . $value['nazwa'] ."";
  7.    $id_prod= "" . $value['id'] ."";
  8.    
  9. $nazwa_prod_gut="\"$nazwa_prod\",";
  10. $id_prod_gut="\"$id_prod\",";
  11.  
  12.    
  13.    }
  14.  
  15.  
  16. $katalog->encoding="iso-8859-2";
  17.  
  18. foreach($katalog->produkty->produkt as $key=>$produkt){  
  19. $waga_do_wsadzenia="";
  20. $opis="";
  21. $fotka="";
  22.  
  23.  
  24. foreach($produkt->technika->parametr as $parametr){
  25. //$opis.=  '<b>'. $parametr[nazwa].':</b> ' . $parametr[opis].'<br>' ;
  26. $opis.=  ''. $parametr[nazwa].': ' . $parametr[opis].' '.$parametr[jm].'<br>' ;
  27. //$opis.=  ''. $parametr[nazwa].': ' . $parametr[opis].'<br>' ;
  28.  
  29. $opsproduktu=  ''. $parametr[nazwa].'' ;
  30.  
  31. }
  32.  
  33. ///////////////////////////////////////////////////////////////////////////////
  34. foreach($produkt->zdjecia->zdjecie as $zdjecie){
  35.  
  36. $fotka.=  ''. $zdjecie[plik].', ' ;
  37. }
  38.  $c++;
  39.  
  40. $arr= (explode(', ', $fotka, -1));
  41.  
  42.  
  43. $data_akt=date('Y-m-d');
  44.  
  45.      $aktualicacja ="UPDATE wsad_xmll SET data='$data_akt'  WHERE idproduktu='$dattt'";
  46.      if (!mysql_query ($aktualicacja, $link) )
  47.                {    
  48.                die (mysql_error());
  49.                }    
  50.  
  51.                    
  52. }
  53. ?>
MWL
Moze warto po każdym dodaniu dodać kropkę (echo) i sprawdzić czy ona działa w ogóle.
motor
skrypt działać działa
nie bardzo rozumiem o co chodzi z ta kropką ?
ns
Kropka przed = pozwala na przypisanie kilku danych dla tej samej zmiennej!

$text = 'Siema adam';
$text .= ', jutro ide na piwo';

echo $text;

wynik:
Siema adam, jutro ide na piwo, w przypadku braku kropki dla drugiej zmiennej dostałbyś wynik: , jutro ide na piwo

Prosta rzecz a bardzo przydatna, w szczególności dla obsługi błędów
motor
A widzę że działa bo przez phpmyadmin w bazie dodają ssie wpisy , tylk oze trwa to strasznie długu i zadnienie nie wykonuje się do końca , przy okazji zawiesza serwer , bo potem go muli murze dać restart
coś jakby się zapętlało i zajmowało pamięć , zrobiłem inny skrypt i mam ten sam problem co robię źle ?


  1. <?php
  2. $aktualnadata = date('Y-m-d');
  3.  
  4. $result2 = mysql_query("SELECT * FROM wsad_xmll ");
  5. while ($row2 = mysql_fetch_array ($result2) )
  6.            {
  7.            print"$row2[idproduktu]";
  8.            
  9.            
  10. $calquery = "UPDATE wsad_xml SET data = '$aktualnadata'  WHERE idproduktu='$row2[idproduktu]'";
  11. if (!mysql_query ($calquery, $link) )
  12.             {    
  13.             die (mysql_error());
  14.              }    
  15.            
  16.            
  17.            
  18.             }
  19. ?>
nospor
wykonujesz mase zapytan w petli to sie muli. To da sie szybo zrobic jednym zapytaniem:
  1. <?php
  2. $aktualnadata = date('Y-m-d');
  3.  
  4. $calquery = "UPDATE wsad_xml x1,wsad_xmll x2 SET x1.data = '$aktualnadata' where x1.idproduktu = x2.idproduktu";
  5. if (!mysql_query ($calquery, $link) )
  6.           {    
  7.           die (mysql_error());
  8.            }
  9. ?>
motor
Czyli jeśli chcę nadpisać dane z jednej bazy do 2

  1. <?php
  2. $aktualnadata = date('Y-m-d');
  3.  
  4. $calquery = "UPDATE wsad_xml x1,wsad_xmll x2 SET x1.cena = 'x2.cena' where x1.idproduktu = x2.idproduktu";
  5. if (!mysql_query ($calquery, $link) )
  6.          {    
  7.          die (mysql_error());
  8.           }
  9. ?>



questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?
nospor
No przeciez tak napisalem....
A jesli ci nie dziala to napisz ze nie dziala (i czym sie objawia) a nie ponawiasz pytanie na ktore padla juz odpowiedź

edit
nie: x1.cena = 'x2.cena'
a: x1.cena = x2.cena

kopiuj z glową a nie bezmyslnie
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-2025 Invision Power Services, Inc.