[PHP] Prace se soubory pri terminaci skriptu

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
OndraSter
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 22. úno 2006
Bydliště: Praha / ČVUT FIT
Kontaktovat uživatele:

[PHP] Prace se soubory pri terminaci skriptu

Příspěvek od OndraSter »

Nazdar..

Zacal jsem vyvoj na mem novem webovem 'jadre' a udelal jsem tam i mj. logovaci mechanizmus. Ten se na konci parsovani zapise do souboru.

Inu, register_shutdown_function mi nesezere nestaticky metody v tride. Tak jsem udelal jednu zvlastni obycejnou funkci:

Kód: Vybrat vše

function shutdown() {

	global $page, $mysql;
	
	$mysql->terminate();
	$page->terminate();
	
}
a tu jsem dal do register_shutdown_function. Nasledne sem se divil, proc se nezapise log! (Ten se automaticky zapisuje tesne pred skoncenim terminate() v $page)

Samo ze nejaky 'debugging' nepomohl - vzdy se vypsalo to, co bylo jako obsah logu, spravne, jak melo. (

Kód: Vybrat vše

	function terminate() {
	
		$this->add('Ending log at ' . time() . ' (' . date('d.m.Y H:i:s') . ')');
		
		$out = '';
		
		foreach($this->lines as $line) {
		
			$out .= $line . "\n";
			
		}
		
		file_put_contents('./logs/' . time() . '_' . rand(0, 300) . '.log', $out);
		

		echo './logs/' . time() . '_' . rand(0, 300) . '.log', $out;
	
	}
)

Po 45ti minutach jsem prisel na to, ze kdyz je nejaka funkce volana automaticky pres ten register_shutdown_function a zapisuje se z ni do souboru (file_put_contents, fopen & fwrite & fclose) tak se proste nic nestane, ani zadna chybova hlaska, proste nic.

Napadlo me pouzit ve tridach __destruct().. Ale co se nestalo! Ten samy vysledek jako pri register_shutdown_function()!

neco jsem o tom nasel na php.net ale to je 3 roky stare.. Podival jsem se do Server Rootu (ne document rootu) a opravdu tam byly vsechny logovaci soubory!

resenim je tedy:

Kód: Vybrat vše

		file_put_contents(dirname(__FILE__) . '/logs/' . time() . '_' . rand(0, 300) . '.log', $out);
pokud nekdo bude resit tento problem tak doufam ze mu toto pomuze.. :wink:
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32


Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
Odpovědět

Zpět na „Programování a web“