Skocz do zawartości
Andrzej Braszka

Oczekiwanie na strone

Polecane posty

Nie znam masz racje ,ale także nie mam kasy żeby kogoś zatrudnić.Dostałem e-mail ,że ten pik właśnie robi tyle zapytań

<meta http-equiv="Content-type" content="text/html; charset=UTF-8">

<?php

set_time_limit(0);

require_once("inc/dbc.php");

$user = mysql_query("select * from users");

$ileuser = mysql_num_rows($user);

 

 

 

for ($i=0;$i<$ileuser;$i++) {

$user = mysql_query("select * from users");

$nick = mysql_result($user,$i,"login");

$hp = mysql_result($user,$i,"HP");

$stamina = mysql_result($user,$i,"energia");

 

//hp

$maxhp = 100;

if ($hp < $maxhp) {

$newhp = $hp + 20;

if ($newhp > $maxhp){

$newhp = $maxhp;

}

mysql_query("UPDATE users SET HP='$newhp' WHERE login='$nick'") or die(mysql_error());

 

 

}

 

//energia

$maxstamina = 50;

if ($stamina < $maxstamina) {

$newstamina = $stamina + 35;

if ($newstamina > $maxstamina){

$newstamina = $maxstamina;

}

mysql_query("UPDATE users SET energia='$newstamina' WHERE login='$nick'") or die(mysql_error());

}

 

 

flush();

}

 

function get_percent($percent,$number)

{

$per = 100 / $percent;

return $number / $per;

}

 

?>

 

Może ktoś powie co tu źle jest ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Może ktoś powie co tu źle jest ?

Po co wykonujesz 2 razy "select * from users");" ?

Po co wykonujesz 2 razy UPDATE?

 

 

 

poza tym:

if ($hp < $maxhp) {
$newhp = $hp + 20;
if ($newhp > $maxhp){
$newhp = $maxhp;
}

Np masz 2 userow:

user1 90hp

user2 120hp

 

po pierwszym wykonaniu crona Ci userzy beda mieli:

user1 110hp

user2 100hp

 

po drugim wykonaniu:

user1 100hp

user2 100hp

 

 

Nie mozesz po prostu wykonac "UPDATE users SET hp=100 WHERE hp>100" i "UPDATE users SET hp=hp+10 WHERE hp<100" ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Weź dwie kartki i długopis

 

Rozpisz na jednej jak działa ten plik po kolei co z czym robi

 

Zastanów się 5-10 minut co robi to zadanie

 

Na drugiej kartce napisz to samo ale z pominięciem zbędnych pierdół i jak to samo można zrobić w prostszy sposób :)

 

Następnie zrób plik testowy czy działa ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wszystko co robisz tym skryptem, MySQL może zrobić sam, więc obciążenie procesora będzie albo 0 albo przez ułamki sekund większe (jak przy normalnym zapytaniu).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wszystko co robisz tym skryptem, MySQL może zrobić sam, więc obciążenie procesora będzie albo 0 albo przez ułamki sekund większe (jak przy normalnym zapytaniu).

co 7 minut miałbym sam nawalać crona przecież to jest nie realne

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Andrzej nie poradzisz sobie z optymalizacją, uświadomiłeś nam to w tym temacie. Tak jak Sponsi radzi skorzystaj z działu giełda i zleć to komuś ogarniętemu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Trochę teorii z SQLa też się przyda.

Zamykamy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×