ugrás a tartalomhoz

Semi dynamic index.html

Ustak · 2008. Szep. 13. (Szo), 20.10
Imhol eme kód:
Sajnos nem az én kreálmányom, viszont nagyon szeretném használt venni. Annyit csinál, hogy az adott index.php-t lefuttatja, az eredményből pedig index.html -t készít, így elég csak akkor adatbázishoz fordulni az oldallal, amikor változott is valami (a felvitel,törlés,módosítás hívja meg ezt a függvényt). Mivel a menüt egy rekurzív hívással rajzolom ki az oldalon, és 100 termék körül van a menüpontok száma, olyan jó ötletnek tűnik ez a megoldás.
Itthon piciny ubuntumon tökéletesen megy is a dolog, mégpedig úgy, hogy az example.hu helyett localhost-ot adok meg az $srcurl változóban.
Ám mikor a felraktam élesben a tárhelyre, a localhost-os hívás nem működött. Gondoltam kipróbálom az alsó url-t, és azzal működött is, de csak a felét rajzolta ki az oldalnak, majd mintha elvágták volna. Azt hittem a script a hibás, de utána próbálgattam tovább, és volt hogy 3/4-ét legenerálta, volt hogy a body-ig el sem jutott, és volt hogy teljesen normálisan működött.
Szóval mi ennek az oka? Sajnos nem értek ehhez a részéhez, csak okoskodok. Lehet hogy a localhost hívások nem mennek ki a netre, hanem helyben végrehajtódnak, míg az alábbi példa kimegy a netre, és ott veszhet el tartalom? Vagy ez hülyeség? Beszéljek a szolgáltatóval hogy van -e ott is lehetőség ilyenre? Vagy van valami egységes szabály arra, hogy ilyenkor hogy "számolom ki" az url-t (ami itthon http://localhost/index/index.php) ?
Köszi a válaszokat, ötleteket.
Szóval imhol a kód.
	
public function generate_index() {
		$srcurl="http://example.hu/index/index.php";
		$tempfilename="../tempindex.html";
		$targetfilename="../index.html";
		echo "<p>index.html generálása</p>";
		@unlink($tempfilename);
		$dynpage=fopen($srcurl, 'r');
		if (!$dynpage) {	
			exit('<p>forrásfájl megnyitása sikertelen</p>');
		}
		$htmldata=fread($dynpage,1024*1024);
		fclose($dynpage);
		$tempfile=fopen($tempfilename,'w');
		if (!$tempfilename) {
			exit('<p>temporális fájl megnyitása nem sikerült</p>');
		}
		fwrite($tempfile,$htmldata);
		fclose($tempfile);
		$ok=copy($tempfilename,$targetfilename);
		unlink($tempfilename);
		if ($ok) {		
		echo '<p>statikus oldal kreálása sikeres, kattins <a href="../index.html">ide</a> a folytatáshoz</p>';}
		
	}
 
1

output buffering?

szabo.b.gabor · 2008. Szep. 14. (V), 15.55
http://hu.php.net/manual/en/function.fread.php - ezt kellene elolvasnod (: amúgy a 12. sor körül lesz a bibi..


miért nem csinálsz az index.php-d vagy bármi elején egy ob_start()-ot a végén megy egy ob_get_contents()-t és írod ki fájlba..
2

Köszi az olvasnivalót...

Ustak · 2008. Szep. 14. (V), 16.32
köszi az olvasnivalót, tényleg a 12. sorban volt a hiba! Ez nagyon nagy segítség volt tényleg. Nem is gondoltam hogy ennyi csak a baj.
Az output bufferingről halvány lila gőzöm sincs hogy mi, bevallom férfiasan, de utánanézek. Így most jól működik a dolog, nem tudom van értelme változtatni?
Tehát az új 12 sor:

	$dynpage=fopen($srcurl, 'rb');
		if (!$dynpage) {	
			exit('<p>forrásfájl megnyitása sikertelen</p>');
		}
		$htmldata=stream_get_contents($dynpage);
		fclose($dynpage);
		$tempfile=fopen($tempfilename,'w');
//és így tovább blablabla
MÉg egyszer köszi!