MySQL UPDATE dużej ilości rekordow

Witam serdecznie,

Mam do zaktualizowania ok 70.000 rekordów - parę razy dziennie.

Mój aktualny skrypt wygląda następująco:

$pobrany_plik_csv = $www_plik;
$url_pliku = 'http://'.$www_login.':'.$www_haslo.'@'.$www_domena_oraz_sciezka;
$db->query("UPDATE cms_produkty SET ilosc = '0' WHERE ate <> '0';");

file_put_contents($www_plik, fopen($url_pliku, 'r'));
$e = null;
$e2 = null;
$licze = 0;
$plik = fopen($www_plik, "r");
while( $wiersz = fgetcsv($plik, 4000, ",") )
{
if($wiersz['1'] !="0") {
if($wiersz[1] == "") $wiersz[1] = 0;

if($licze <= 5){
$licze = $licze + 1;
$result = mysql_query(" UPDATE cms_produkty SET ilosc = '$wiersz[1]' WHERE ate = '$wiersz[0]'; ") or die('Query failed: ' . mysql_error());
}
if($licze == 5){
$licze = 0;
$e2 = null;

}

} 
}
        ?>

 

 

Skrypt pobiera plik poprawnie z 2 serwera jednak wykonywanie jogo trwa ok 30 minut i kończy się komunikatem: Blad w polaczeniu z baza danych [Too many connections]

 

Wie ktoś może dlaczego?

Bardzo proszę o pomoc:)

 

Możesz pokazać kod nawiązania połączenia?

$pobrany_plik_csv = $www_plik;
$url_pliku = 'http://'.$www_login.':'.$www_haslo.'@'.$www_domena_oraz_sciezka;
$db->query("UPDATE cms_produkty SET ilosc = '0' WHERE ate <> '0';");

file_put_contents($www_plik, fopen($url_pliku, 'r'));
$plik = fopen($www_plik, "r");
while( $wiersz = fgetcsv($plik, 4000, ",") )
{
if($wiersz['1'] !="0") {
if($wiersz[1] == "") $wiersz[1] = 0;
mysql_query(" UPDATE cms_produkty SET ilosc = '$wiersz[1]' WHERE ate = '$wiersz[0]'; ") or die('Query failed: ' . mysql_error());
}

}

Proszę sprawdzić czy uproszczony kod tez generuje błędy

to samo:(

Proszę sprawdzić zachowanie przy usunięciu ; z końca zapytania mysql_query

nie pomogło:(

 

 

zbudowałem taki skrypt:

file_put_contents($www_plik, fopen($url_pliku, 'r'));
		$e = null;
		$e2 = null;
		$licze = 0;
		$plik = fopen($www_plik, "r");
		while( $wiersz = fgetcsv($plik, 4000, ",") )
			{
			if($wiersz['1'] !="0") {
				if($wiersz[1] == "") $wiersz[1] = 0;
				mysql_query(" INSERT INTO cms_temer (nazwa, ilosc) VALUES ($wiersz[0], $wiersz[1]); ") or die('Query failed: ' . mysql_error());
				}
				}	
			
			
			$update1 = null;
			$update2 = null;
			$update3 = null;
			$iillee = 0;
			$wynik = mysql_query(" SELECT * FROM cms_temer ;") or die('Query failed: ' . mysql_error());
			while($rek = mysql_fetch_array($wynik)) { 
				if($iillee < 200) {
					$update .= " UPDATE cms_produkty SET ilosc = '$rek[ilosc]' WHERE ate = '$rek[nazwa]'; ";
					$update1 .= " WHEN $rek[nazwa] THEN '$rek[ilosc]' ";
					$update2 .= " $rek[nazwa], ";
					$update3 .= 
					$iillee = $iillee + 1;
				}
				if($iillee == 200){
				$update2 = substr($update2, 0, -3);
					$qqqqqq = "UPDATE cms_produkty SET ilosc = CASE ate
						 $update1
						 ELSE ilosc END
						WHERE ate IN ($update2);
					";
					mysql_query($qqqqqq);
					$update1 = null;
					$update2 = null;
					$update3 = null;
					$iillee = 0;
				}
			}

ale też kurcze nie chce działać:(

Może zastosowanie mysql_pconnect() zamiast mysql_connect()

  1. Przestań słuchać rad od  krypton , bo są tak beznadziejne, że szkoda klawiatury, żeby uzasadniać