Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:1f7:bcfb:c6...–

peter
HTML / XHTML › Více obrázků v jednom souboru
11. 9. 2014   #193819

mujweb.cz/images/logo-verze1.png
mujweb.cz/images/logo-verze2.png
mujweb.cz/images/stranka-verze1.php
mujweb.cz/images/stranka-verze2.php
mujweb.cz/images/stranka.php?verze=1
mujweb.cz/images/stranka.php?verze=2
mujweb.cz/images/obrazek.php?jmeno=logo.png&verze=1
Mozna by bylo lepsi, kdybys rekl, k cemu to potrebujes, co tim chces docilit.
K obrazku otaznik dat muzes, ale nemas defaultne nastaveny server, aby to umel zpracovat a tak vse za otaznikem ignoruje. Toto nastaveni mas jen pro koncovku htm, php. V htm to jde precist javascriptem pres window.location nebo location. V php to je $_REQUEST, $_POST, $_GET.
Pokud bys to nutne chtel mit presne tak, jak to pises, tak by se to resilo dodatecnym nastavenim serveru v souborech php.ini, httpd nebo .htaccess. Nastavis tam, ze pokud je pripona png a je tam ?, tak to ma presmerovat na soubor obrazek.php a predat mu pres otaznik parametry jmeno a verze. V php uz to zpracujes a vratis obrazek nebo link na nej. Ale nedoporucuji to takto delat. Soubor pak zatezuje server misto toho aby se to pekne kesovalo, kdyz se vklada primy link.

peter
PHP › ako fungujú zámky na súbory ?
11. 9. 2014   #193817

Zkus si nasimulovat opacnou situaci. Mas chat s mnoha uzivateli online. Co se stane, kdyz tam locky nedas?
Zapis do souboru nejakou dobu trva. Php preda funkci zapis parametry a dal si dela svoje. Pokud dva uzivatele pres php provedou fwrite a ten druhy se trefi zrovna do okamziku, kdy ten jeden jeste neudelal fclose. Php mu to dovoli a cele se to znici, nuluje velikost souboru. Pro takovy pripad se vymysleli flock, ktery druhemu uzivateli blokuje pristup ke zmene obsahu, kdyz s nim pracuje jiny uzivatel. Pred db jsem pouzival tento kod

function writeFile($file_name,$data_to_save,$end_time,$type='w')
{
global $ERRORS;
$fp = fopen($file_name,$type);
if ($fp)
	{
	$start_time = microtime();
	do	{
		$can_write = flock($fp, LOCK_EX);
		if (!$can_write)
			{usleep(round(rand(0,100)*1000));}
		}
	while ((!$can_write) and ((microtime() - $start_time) < $end_time));
	if ($can_write)
		{fputs($fp,$data_to_save);}
	else	{$ERRORS[] = 'writeFile: file write error!'; return false;}
	@chmod($file_name,0755);		//!nastavit prava k zapisu souboru, 755 (rwx r.x r.x) nebo 644 (rw. r.. r..) (owner-vlastnik, group-skupina, other-ostatni, r-read, w-write, x-execute; umask, mkdir)
	fclose($fp); 
	}
else	{$ERRORS[] = 'writeFile: file open error!'; return false;}
return true;
}

U db muze nastat neco podobneho. Tam jsou zamky take. Ale u db se vykonavaji prikazy postupne a ne najednou, jak to umoznuje server/php. Samozrejme, kdy dva lide edituji jeden zaznam, tak se prepise udaji, ktere poslal posleni z nich. Ale nezkolabuje kvuli tomu soubor s databazi, jak se to stane u fwrite bez flocku.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý