Skocz do zawartości

Niekończąca się pętla for


michalk

Rekomendowane odpowiedzi

Witam!

Napisałem skrypt który korzysta z pętli for która niestety się nigdy nie kończy. Uruchamiam skrypt przez wejście na stronę i pętla ma być aktywowana tylko 20 razy, a chodzi cały czas. Do tego jak zamknę okno skryptu to na serwerze skrypt cały czas pracuje i dopiero restart apache go zatrzymuje.

Co może być tego przyczyną i jak to rozwiązac?

Czy to jest normalne, że skrypt się nie zatrzymuje po zamknięciu okna?

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Co może być tego przyczyną i jak to rozwiązac?
Źle napisana pętla/skrypt.
Czy to jest normalne, że skrypt się nie zatrzymuje po zamknięciu okna?
Tak, będzie się "kręcić" do czasu jaki jest ustawiony dla wykonywania skryptu (maksymalny czas na wykonanie skryptu).

Nie znam się na pozycjonowaniu, ja tu tylko zużywam transfer i miejsce w sql.

Roman Kluska ujawnia: nadchodzi INFLACYJNY ARMAGEDON!

 

Wielki Elektronik

Odnośnik do komentarza
Udostępnij na innych stronach

i jak to rozwiązac?
for($ii = 0; $ii <20; $ii++)
{
// Jakies operacje_
}

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

juz podaje jak to wyglada u mnie. Petle mam tak napisana jak podaje Mion

for($strona=0; $strona<10; $strona++){

//zapytanie o aktualny numer
$wynik = mysql_query("SELECT * FROM numer WHERE id='2'")
or die('Blad zapytania Blad : ' . mysql_error());
while($r = mysql_fetch_array($wynik)){
$numer = $r[numer];
}

//zapytanie o aktualny link
$wynik = mysql_query("SELECT * FROM linki WHERE id='".$numer."'")
or die('Blad zapytania Blad : ' . mysql_error());

//sprawdzenie czy istnieje taki numer linku
if(mysql_num_rows($wynik) != 0){
	while($r = mysql_fetch_array($wynik)){
		$strona = $r[link];

		 $link = 'https://www.adres.net/'.$strona.'.html';
		$link2 = $strona.'.html';

		$contents2= file_get_contents($link);
		$szukany2 = '<title>([[:print:]]{2,})::';
		if (ereg($szukany2, $contents2, $w)) {
		$title = $w[1];

		$wynik = mysql_query("SELECT * FROM baza WHERE link='".$link2."'")
		or die('Blad zapytania Blad : ' . mysql_error());

		$wynik2 = mysql_query("SELECT * FROM baza2 WHERE link='".$link2."'")
		or die('Blad zapytania Blad : ' . mysql_error());

		$wynik3 = mysql_query("SELECT * FROM baza3 WHERE link='".$link2."'")
		or die('Blad zapytania Blad : ' . mysql_error());

		$wynik4 = mysql_query("SELECT * FROM baza4 WHERE link='".$link2."'")
		or die('Blad zapytania Blad : ' . mysql_error());
		if(mysql_num_rows($wynik4) < 1){
		if(mysql_num_rows($wynik3) < 1){
			if(mysql_num_rows($wynik) < 1){
				if(mysql_num_rows($wynik2) < 1){
			$zapytanie = "INSERT INTO baza4 (title, link) VALUES ('".$title."', '".$link2."')";
			mysql_query($zapytanie);
			echo 'Wartosc zostala dodana - '.$link2.'<Br>';
				}
				else{
				echo 'Taki wpis już istnieje<Br>';
				}
			}
			else{
			echo 'Taki wpis już istnieje<Br>';
			}
		}
		else{
		echo 'Taki wpis już istnieje<Br>';
		}
		}
		else{
		echo 'Taki wpis już istnieje<Br>';
		}

		} 
		else {
		echo "NIE ZNALEZIONO - zly title".$link."<br>";
		}	


		}
	}
else{
	echo 'blad';
	exit();
}



//przeszukiwanie kolejnej strony
$numer = $numer+1;
$zapytanie = "UPDATE numer SET numer=".$numer." WHERE id='2'";
mysql_query($zapytanie);
if($strona == 10){
exit();
}
}

Odnośnik do komentarza
Udostępnij na innych stronach

W jednej petli następne pętle z wywołaniami do bazy TAK się nie robi Kolego!

Pierwsza petla while jest calkowicie zbedna powinno byc tak:

//zapytanie o aktualny numer
$wynik = mysql_query("SELECT id,numer FROM numer WHERE id='2'")or die('Blad zapytania Blad : ' . mysql_error());
$r = mysql_fetch_array($wynik);
$numer = $r[numer];

Tak czy inaczej Twój kod a dokładniej rzecz biorąc algorytm nadaje się tylko do kosza.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Wielkie dzięki za rozwiązanie tego problemu. Szukałem sam przez długi czas ale o tym bym nawet nie pomyślał. Jeszcze raz dzięki

Tak czy inaczej Twój kod a dokładniej rzecz biorąc algorytm nadaje się tylko do kosza.

Nawet zepsuty algorytm/kod bardzo mi się przydał i odwalił kawał dobrej roboty. Byłem ciekaw co było przyczyną tego błędu i na przyszłość już będę wiedział czego szukać

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności