Autor | Zpráva | ||
---|---|---|---|
Imro Profil * |
#1 · Zasláno: 21. 1. 2011, 16:04:14
Dobrý deň.
Na svojej stránke využívam ukladanie informácií do súborov, tých informácií sa však ukladá veľmi veľa (užívatelia, komentáre a iné dáta) a niekde som počul, že je možné takto stratiť dáta (ak sa naraz ukladajú dve veci - buď sa jedno neuloží, alebo sa obe skombinujú, napr. ukladám slovo LOL a ROFL, bude z toho buď LOL, alebo ROFL, alebo LOFL), je to pravda? Ak hej, je možné tejto strate dát nejako zabrániť bez využitia SQL? Hosting totiž SQL nepodporuje a okrem toho by som existujúce dáta príliš dlho prenášal do tabuliek... Napadlo ma, či by nešlo nejako využiť CRON, aby sa tie dáta nejako uložili a každú minútu by ich CRON zapísal, ale je tam v podstate rovnaký problém - počas tej minúty tie dáta musia niekde byť zapísané... Nejaký nápad? Vopred vďaka za odpovede. |
||
xmark Profil |
#2 · Zasláno: 21. 1. 2011, 16:12:47
LOL a ROFL k přesné odpovědi bohužel nestačí. Myslím že i pomocí souborů lze dosáhnout bezpečného ukládání dat, ale není to jednoduché. Jestli jde o projekt, který má nějakou návštěvnost a má smysl do něj investovat pár set Kč, doporučil bych přestěhovat to na hosting s databází.
|
||
NejakyTom Profil |
#3 · Zasláno: 21. 1. 2011, 16:20:34 · Upravil/a: NejakyTom
Rozhodne prejit na hosting kde je nejaky db system..
Databaze nejsou stvoreny jen tak pro srandu, ma to nejaky smysl a rozhodne hrozi mensi sance ze nejaka data ztratite, lehci organizace, vyhledavani, razeni a dalsi a dalsi veci. A nejake prepsani dat je nemozne. Jinak k tematu: kdyz prvni uzivatel odevre soubor a zacne do nej zapisovat a mezitim udelat jiny uzivatel to same je jasne ze se data zapsat nemuzou - respektive se prepisou (urcite se nespoji) a data jednoho z uzivatelu (zalezi ktery soubor ulozi driv) tam nebudou. Akorat tohle probiha strasne moc rychle takze sance ze se to stane je mala. |
||
Imro Profil * |
#4 · Zasláno: 21. 1. 2011, 16:26:26
xmark:
Problém je, že zatiaľ neviem či stojí za to investovať do toho ďalšie peniaze. NejakyTom: Nemyslel som zapisovanie do JEDNÉHO súboru, ale do rozdielnych súborov. Užívateľ č. 1 sa registruje, PHP otvorí súbor LOL.dat a zapíše dáta. V tom istom momente užívateľ č. 2 pridá komentár, otvorí sa súbor ROFL.dat a zapíšu sa dáta. Takto na to vplyv nemá? Ak sa naraz využívajú dva súbory, nestratia sa dáta? Len ak sa naraz používa jeden? Ale vďaka, asi prejdem na tú DB. |
||
NejakyTom Profil |
#5 · Zasláno: 21. 1. 2011, 16:29:59
V tomhle pripade neni duvod proc by se data mohla vytratit.
Ale i tak doporucuji nejakou DB nejlepe asi nejrozsirenejsi MySQL kterou ma 90% webhostingu. |
||
imploder Profil |
#6 · Zasláno: 21. 1. 2011, 16:48:34
Imro:
Může se to pokazit, jenom pokud 2 skripty mají soubor otevřený ve stejnou dobu. Pokud ho jeden upraví, zavře a až pak ho otevře druhý, tak se nic stát nemůže. PHP samo o sobě nemá vhodné prostředky, jak tohle zaručit, ale jde použít třeba Nette::SafeStream. Pokud se bude se souborem pracovat pomocí něj, tak to bude bezpečné. |
||
Imro Profil * |
#7 · Zasláno: 21. 1. 2011, 16:57:47
NejakyTom, imploder:
No v podstate vždy sa dáta zapisujú postupne, no aj tak sa môže stať, že dáta zapíšu dvaja užívatelia naraz (napr. sa registrujú, vtedy sa síce pracuje s rozdielnymi súbormi, no napr. ich e-mail sa zapíše do jedného rovnakého súboru, čiže tu je riziko... Ten Nette::SafeStream nechápem - stačí ak pri každej ceste k súboru použijem safe:// ? Spýtam sa providera či je možné pridať k zakúpenému balíku aj databázu, ak hej, prejdem na SQL, ak nie, pozriem sa bližšie na ten Safestream, každopádne veľmi pekne ďakujem všetkým. |
||
Imro Profil * |
#8 · Zasláno: 21. 1. 2011, 17:13:07
Dokelu práve mi došlo - na ten SafeStream treba aj nejakú knižnicu, nie? Nemám ju tam však ako vložiť, cez FTP mám prístup len k mojej stránke..
|
||
imploder Profil |
#9 · Zasláno: 21. 1. 2011, 18:03:25
Imro:
Jak Nette::SafeStream používat je popsané v tom článku. Ten odkaz na stažení dole (pod nadpisem Download) už nefunguje. Je to součástí knihovny Nette, dokumentace je tady: http://doc.nette.org/cs/nette-io-safestream Vytáhl jsem SafeStream z Nette a přiložil k němu ukázku použití (ukazka.php - zapisuje na konec souboru soubor.txt řádky "ahoj"): odkaz Stačí zavolat NSafeStream::register() a pak dávat před cestu k souboru 'safe://' a používat standardní funkce PHP pro práci se soubory. Mělo by to fungovat. |
||
Imro Profil * |
#10 · Zasláno: 21. 1. 2011, 19:19:15
imploder:
A funguje to štandardne aj pri iných módoch (zápis, čítanie), resp. mám to safe:// používať aj pri čítaní súborov alebo len pri zápise? Bude to fungovať aj keď zapisujem/čítam do/zo súborov po riadkoch (zápis niečo\n niečo, čítanie fgets, fgets)? Vďaka. |
||
Imro Profil * |
#11 · Zasláno: 21. 1. 2011, 20:34:47
imploder:
Jo a (prepáč že sa stále pýtam kraviny) teda nebude treba žiadnu knižnicu, len includnúť ten PHP súbor s funkciami toho Nette, však? |
||
imploder Profil |
#12 · Zasláno: 21. 1. 2011, 21:12:43
Imro:
Stačí to jen includnout a zavolat NSafeStream::register() - jako je to ve skriptu ukazka.php. Nic jiného z Nette není potřeba používat. Dají se používat různé módy, na čtení i na zápis. Všechno je to v SafeStream.php - je to jedna malá třída, nic rozsáhlého. Funkce se dají používat standardní, jako normálně v PHP. |
||
Imro Profil * |
#13 · Zasláno: 21. 1. 2011, 22:26:26
imploder:
Ďakujem ti, práve si mi ušetril veľa trápenia :D Posledná ******* otázka - aby som predišiel problémom - safe:// mám použiť pred cestou k súboru alebo pred súborom? Teda 'safe:///lol/subor.txt' alebo '/lol/safe://subor.txt' ? |
||
Imro Profil * |
#14 · Zasláno: 21. 1. 2011, 22:28:01
Jo a ešte...
treba používať aj unlink('safe://subor.txt') (keď už, tak predpokladám že po fclose)? |
||
imploder Profil |
#15 · Zasláno: 21. 1. 2011, 22:47:14
Imro:
„Posledná ******* otázka - aby som predišiel problémom - safe:// mám použiť pred cestou k súboru alebo pred súborom?“ Před celou cestou. Je to podobné, jako se u URL zapisuje na začátku http:// jako název protokolu - stejný princip. „treba používať aj unlink('safe://subor.txt') (keď už, tak predpokladám že po fclose)?“ Ne. To by soubor smazalo. V článku je to uvedené jen pro ilustraci, že to jde. |
||
Imro Profil * |
#16 · Zasláno: 21. 1. 2011, 22:58:47
imploder:
Vďaka, na to prvé som už prišiel sám (ale predsa len som mal čakať na tvoju odpoveď :D 2 minúty stránka nič nezapisovala keďže som to safe:// dal najprv pred názov súboru). Ten unlink ma napadol vďaka tej dokumentácií Nette... Každopádne ti ďakujem, funguje to ako má :) |
||
Časová prodleva: 13 let
|
0