Autor Zpráva
Luky
Profil
Zdravím,
snažím se vytvořit import produktů (cca 70 000) ze souboru do databáze. Script se vykoná (vypíše výsledky na obrazovku), ale zároveň vypíše ještě pár warningů.
MySQL server has gone away in...
Error reading result set's header in...
Oba ukazují na tem samý řádek (kde se provádí dotaz na databázi).

Zkoušel jsem za dotaz přidat mysql_ping() nebo script po 10 000 záznamech na 5 sekund uspat, ale nepomáhá to :)

třeba se dá nějak vylepšit i toto:
foreach($productsUpdate as $value) {
    if (isset($value["pocetkusu"])) $zobraz = ", `pocetkusu` = ".$value["pocetkusu"];
    if (isset($value["cena_vyrobce"])) $zobraz .= ", `cena_vyrobce` = ".$value["cena_vyrobce"];
    if (isset($value["nakupni_cena"])) $zobraz .= ", `nakupni_cena` = ".$value["nakupni_cena"];
mysql_unbuffered_query(" UPDATE `produkty` SET 
        `cislo_skladu` = ".$value["cislo_skladu"].",
         `nazev_cz` = '".$value["nazev_cz"]."',
         `url` = '".$value["url"]."',
         `skladove_cislo` = '".$value["skladove_cislo"]."',
         `uloziste` = '".$value["uloziste"]."',
         `vlozeno` = ".$value["vlozeno"].",
         `zobrazit_cz` = ".$value["zobrazit_cz"].",
         `zobrazit_en` = ".$value["zobrazit_en"]."
         $zobraz    
        WHERE `produkt_kod` = '".$value["produkt_kod"]."'");  
        if($rk == 10000) { sleep(5); $rk = 0; }
        mysql_ping();      
   $a++; $rk++;
}

U mě na localhostu to funguje (xampp - jediná změna u post_max_size)

Děkuji za každou radu :)
ShiraNai7
Profil
Zkus použí mysql_query() namísto té unbuffered. Nedává to smysl - update vrací jen boolean.
Luky
Profil
ShiraNai7:
To už jsem zkoušel jenom z nouze. Vím o tom, že na Update to nemá asi smysl, ale chtěl jsem to zkusit.
Jak jsem říkal u mě na localhostu ten script proběhne v pořádku, ale na VPS to hodí tu chybu s databází.
Pokud je produktů třeba jen 20 000 tak pohoda, ale 70 000 tisíc už to nezvládne.
ShiraNai7
Profil
Můžeš narážet na nějaké omezení na serveru.
http://dev.mysql.com/doc/refman/5.0/en/user-resources.html

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: