PHP - k čemu je funkce tempnam

ZAJDAN

  • *****
  • 2 087
    • Zobrazit profil
    • E-mail
PHP - k čemu je funkce tempnam
« kdy: 06. 10. 2016, 14:28:50 »
Ahoj,
jednou z barier, kterou pocituji pri snaze pochopeni programovani ruznych jazyku je nevhodne pojmenovani funkci.
Mohl by mi prosim nekdo osvetlit jak je to s PHP funkci tempnam?

The tempnam() function creates a temporary file with a unique filename in the specified directory.

jak mám chápat tu dočasnost(temporary)? soubor se sám smaže? jakým způsobem je myšlena ta dočasnost?

díky
« Poslední změna: 06. 10. 2016, 14:32:30 od Petr Krčmář »
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


Daniel Kozak

Re:PHP - k čemu je funkce tempnam
« Odpověď #1 kdy: 06. 10. 2016, 14:50:30 »
Ne musis si to smazat sam, ta docasnost je tu spis myslena tak ze se ocekva ze ten soubor vyuzijes jen docasne, to znamena neco si do nej zapises pak si to treba prectes odjinud a soubor smazes

Kit

Re:PHP - k čemu je funkce tempnam
« Odpověď #2 kdy: 06. 10. 2016, 14:53:29 »
tempnam() vytvoří nový soubor tak, aby jeho název nekolidoval s žádným již existujícím souborem v adresáři.

ZAJDAN

  • *****
  • 2 087
    • Zobrazit profil
    • E-mail
Re:PHP - k čemu je funkce tempnam
« Odpověď #3 kdy: 06. 10. 2016, 15:03:49 »
diky hosi...
moderátor blbě změnil titulek vlakna, protože já se neptal na to, co ta funkce dělá ve své podstatě, pač já vím, že tím vytvořím soubor s "unikatnim" nazvem.
Mě zarážela ta dožasnost. Očekával bych, že název funkce se dá podle toho, jak se zachová stroj a ne jak člověk, proto jsem očekával, že soubor je dočasný z pohledu stroje.

díky
« Poslední změna: 06. 10. 2016, 15:07:04 od ZAJDAN »
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 087
    • Zobrazit profil
    • E-mail
Re:PHP - k čemu je funkce tempnam
« Odpověď #4 kdy: 06. 10. 2016, 15:07:33 »
.
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


Kit

Re:PHP - k čemu je funkce tempnam
« Odpověď #5 kdy: 06. 10. 2016, 15:23:46 »
Většinou je nejlepší se dočasným souborům zcela vyhnout. Někdy to prostě jinak nejde a ten dočasný soubor se udělat musí...

Diskobolos

Re:PHP - k čemu je funkce tempnam
« Odpověď #6 kdy: 06. 10. 2016, 15:32:38 »
moderátor blbě změnil titulek vlakna, protože já se neptal na to, co ta funkce dělá ve své podstatě, pač já vím...

To víš, náš geniální co-všechno-ví-nejíp Péťa :-)

Trupik

Re:PHP - k čemu je funkce tempnam
« Odpověď #7 kdy: 06. 10. 2016, 16:18:19 »
Mě zarážela ta dožasnost. Očekával bych, že název funkce se dá podle toho, jak se zachová stroj a ne jak člověk, proto jsem očekával, že soubor je dočasný z pohledu stroje.
Myslím, že pomenovanie tejto PHP funkcie má základ v C-éčkovej funkcii tempnam, podobne ako väčšina PHP funkcií na prácu so súbormi:
Kód: [Vybrat]
man 3 tempnam

Re:PHP - k čemu je funkce tempnam
« Odpověď #8 kdy: 06. 10. 2016, 16:24:09 »
To víš, náš geniální co-všechno-ví-nejíp Péťa :-)

Nevím všechno nejlíp. Ale když je titulek „PHP - tempnam“, tak je to málo. Je to ze škatulky „Firefox – problém“ a „Server – help!“. Chce to volit ty názvy popisněji, aby bylo jasné, na co se tazatel ptá. Pak nebude třeba je editovat.

Vasek

Re:PHP - k čemu je funkce tempnam
« Odpověď #9 kdy: 06. 10. 2016, 23:04:38 »
tempnam ma pravdepodobne v nazvu temp, pac je primarne urcena k vytvareni temp souboru v tmp slozce https://en.wikipedia.org/wiki/Temporary_folder. Spousta systemu je nakonfiguravana tak, aby se tato slozka pravidelne promazavala, takze by tam mely byt jen soubory, ktere nikomu nebudou chybet (idealne hned jak se uzavre posledni file descriptor).
A ted to tu muzem trochu roztocit. Opravdy bych nehledal nejaky smysl v nazvech php funkci. Kdyz se na ten seznam podivas, tak je to proste jen slatanina: diskfreespace, fclose, file_exists, filesize, realpath_cache_get, set_file_buffer
Komunita, ktera se nedokazala dohodnout na tom, jestli budou pouzivat camel case, podtrzitka nebo zkratky a jestli budou uvadet get/set na zacatku nebo na konci, rozhodne nestravila moc casu premyslenim nad vhodnosti nazvu funkci  :P

Kit

Re:PHP - k čemu je funkce tempnam
« Odpověď #10 kdy: 06. 10. 2016, 23:39:53 »
Ideální je takový dočasný soubor smazat ihned po vytvoření a teprve pak s ním začít pracovat.

q

Re:PHP - k čemu je funkce tempnam
« Odpověď #11 kdy: 07. 10. 2016, 00:11:53 »
Ideální je takový dočasný soubor smazat ihned po vytvoření a teprve pak s ním začít pracovat.
Na *nix systemoch ano, ale ohrozi to prenositelnost na ine systemy. Na toto pouzitie je lepsie pouzit PHP funkciu tmpfile(), ktora je prenositelna a zaisti aj zmazanie.

Kit

Re:PHP - k čemu je funkce tempnam
« Odpověď #12 kdy: 07. 10. 2016, 00:51:44 »
Ideální je takový dočasný soubor smazat ihned po vytvoření a teprve pak s ním začít pracovat.
Na *nix systemoch ano, ale ohrozi to prenositelnost na ine systemy. Na toto pouzitie je lepsie pouzit PHP funkciu tmpfile(), ktora je prenositelna a zaisti aj zmazanie.

To je právě ta otázka, zda funkce tmpfile() zajistí i smazání souboru. Domnívám se, že tohle nedělá.

Re:PHP - k čemu je funkce tempnam
« Odpověď #13 kdy: 07. 10. 2016, 02:34:11 »
Soubor z tmpfile() se smaze s ukoncenim skriptu, viz doc.
Hlavni historicky a prakticky rozdil je, ze tmpfile() vraci resource, zatimco tempnam() nazev souboru. Ne vzdycky chceme soubor rovnou otevrit, napr. pri volani nejakeho externiho skriptu s vice vystupy.

Pokud je vhodne automaticke mazani pri ukonceni skriptu a zaroven pracovat s nazvem souboru, tak lze tempnam() efektivne nahradit: stream_get_meta_data(tmpfile())['uri']; (ale jiz bude vytvoren, coz obvykle nevadi)

Pokud tedy neni potreba, aby tmp soubory pretrvavaly po ukonceni skriptu, tak je tempnam() asi k nicemu, krome tvorby vlaken v diskuzich  :D
« Poslední změna: 07. 10. 2016, 02:35:48 od Martin Dimov »

ZAJDAN

  • *****
  • 2 087
    • Zobrazit profil
    • E-mail
Re:PHP - k čemu je funkce tempnam
« Odpověď #14 kdy: 12. 10. 2016, 10:41:34 »
zdar hoši..použil jsem tedy tempnam, ale ten nevytvoří file type, tak to dělám takto:

$tempSVG = tempnam("/var/www/modelSVG","model_");
$model = file_put_contents($tempSVG.'.svg', $contentSVG);


soubor se v pořádku vytvoří i s příponou .svg a patřičným obsahem
narážím ale na to, jak vytvořený soubor dostat do path src:
<img id="svg-model" type="image/svg+xml" width="200px" src=" '.$tempSVG.' "/>
toto fungovat nebude, pač tam chybí filetype a proměná $model mi cestu nevrátí...

díky za tip
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.