Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Sivusto kaatuu

mika132 [12.12.2010 22:02:43]

#

Eli sivustoni kaatuu luultavasti liiallisen laskemisen takia harmittavan usein.. Olisiko mitenkään mahdollista tehdä PHP sovellusta mikä tallentaa tietoa .txt tiedostoon serverin käyttö prosentista ja kirjoittaisi erilliseen tiedostoon, että täällä tapahtui näin ja näin ja serverin käyttö prosentti oli näin monta prosenttia..

Pitäisi saada kevennettyä tuota systeemiä, mutta en tiedä koska se alkaa olemaan ihanteellisen kevyt joten joku ylimääräinen työkalu tuohon olisi erittäin kätevä. =)

JussiR [13.12.2010 09:05:58]

#

Tuollainen työkalu ei kevennä systeemiä..

Lebe80 [13.12.2010 10:09:04]

#

Tee mieluummin systeemi, joka tallentaa sen "laskennan" tuloksen tekstitiedostoon ja näyttää sen laskennan sijaan, esim. tunnin ajan (tai kauemmin, mikäli laskenta sen sallii).

Metabolix [13.12.2010 15:43:22]

#

Jos sivun luonti kestää liian kauan ja PHP-tulkki sen takia sammuu kesken, ei auta kuin korjata asia. Jos muuten vain haluat optimoida sivun luontia, kannattaa yksinkertaisesti kirjata jonnekin, kauanko skriptin suoritus kesti.

Väännetään vielä varmuuden vuoksi rautalangasta.

function aikaa_kulunut_pyynnon_alusta() {
	static $t0;
	if (!$t0) $t0 = microtime(true);
	return round(microtime(true) - $t0, 3);
}
function tulosta_aika_kommenttina() {
	echo "\n<!-- KULUNUT ", aikaa_kulunut_pyynnon_alusta(), " SEKUNTIA -->\n";
}

// Ensimmäinen kutsu alustaa laskurin.
aikaa_kulunut_pyynnon_alusta();

// Tässä välissä tapahtuu leikisti jotain raskasta.
sleep(1);

// Välissä voi tulostaa kuluneen ajan:
tulosta_aika_kommenttina();

// Tässä välissä tapahtuu leikisti lisää jotain raskasta.
sleep(1);

// Lopuksi tulostetaan vielä kokonaisaika.
tulosta_aika_kommenttina();

Nyt tulostetun sivun lähdekoodissa on kohtia, joista näkee, kauanko skriptin suoritus on siihen mennessä kestänyt.

mika132 [13.12.2010 18:57:19]

#

Eikun siin ongelma on se että ajastin kaataa koko sivuston.. se laskee liikaa dataa ilmeisesti nimittäin se ei jaksa mennä läpi koko helahoitoa.

Sivusto (tai selainpeli) latautuu noin 1-2minuutin ajan jonka aikana näkyy pelkkää valkoista ja cromen välilehdessä tuo lataus juttu pyörii vastapäivään.

sen jälkeen kun tuo minuutti, kaksi on mennyt tulee tälläinen:

Fatal error: Maximum execution time of 10 seconds exceeded in /home/web00439/public_html/gameheaven/the_gangster/yla.php on line 353

Tuo rivi vaihtuu 324 - 489 väliltä. Eli se jää sinne sun tänne jumiin.

Toinen errori mikä tulee yleensä jokatoinen kerta tai joka kerta välillä on:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

ja siis ajastin toimii tällä systeemillä:

<?php
$aikavalia = 180;
function tallenna_aikaa()
{
    $filu=fopen("aika.txt","w");
    fwrite($filu, time());
    fclose($filu);
}

$filu=fopen("aika.txt","r");
$edellinen_aikaa=fread($filu, filesize("aika.txt"));

if(time() >= $edellinen_aikaa+$aikavalia)
{
    //tehdään kaikkea
    tallenna_aikaa();
}
?>

Metabolix [13.12.2010 19:22:04]

#

Väänsin rautalangasta, ja silti et tajunnut. Mahtavaa.

Sinun pitää siellä "tehdään kaikkea" -vaiheessa tulostaa välillä, paljonko aikaa on kulunut, niin näet, mitä tapahtuu ja mikä siinä kestää niin kauan. Sitten sinun pitää korjata ne hitaat kohdat niin, että ne toimivat nopeammin. (Kymmenen sekunnin suoritusaika jossain harrastelijakokoisessa kuulostaa aika isolta, joten minusta on melko todennäköistä, että teet jotain selvästi väärin.)

Omalle palvelimellesi voit asentaa myös Xdebug-laajennoksen ja profiloida koodia sillä. Webhotellissa se luultavasti on mahdotonta, jolloin ei jää juuri muuta neuvoa kuin tulostaa aikoja ja kokeilla poistaa osa laskuista.

Grez [13.12.2010 20:04:13]

#

Eihän nyt hyvänen aika palvelua debugata palvelimella. Oli ihan kenen vaan ja mikä vaan palvelin, niin ei muuta kuin softa pyörimään omalle koneelle ja debuggaaminen on huomattavasti enemmän juhlaa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta