Autor | Zpráva | ||
---|---|---|---|
Hanz56 Profil * |
Zdravim, potreboval bych mensi pomoc, mam tento script:
if($this->cache) { // ulozit cache $abc = fopen($this->cacheFile, "a+"); if ($abc) { fwrite($abc, $buffer); fwrite($abc, 'ahoj'); // tento radek potrebuju zapsat do souboru na urceny radek fclose($abc); } Potreboval bych nejak upravit script aby se text "ahoj" zapsal na urceny radek do textaku. Takto to funguje tak ze se text "ahoj" napise uplne na posledni radek do textaku. Proste bych potreboval upravit tento script ve smyslu: "zapis text "ahoj" na radek cislo 5 a pritom NENAHRAD text ktery byl na tom samem radku doposud, jen to cele posun o ten jeden pridany radek". Diky moc za odpoved Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
lingvik Profil |
#2 · Zasláno: 17. 2. 2010, 09:33:38
Hanz56:
Myslím, že budeš muset nejdřív celý soubor přečíst a potom znovu od začátku zapsat. Nejdřív prvních n-1 řádků, potom nový řádek a nakonec zbytek souboru. |
||
AM_ Profil |
#3 · Zasláno: 17. 2. 2010, 11:03:37
teoreticky by stačilo přečíst jen data za přidávaným řádkem, soubor oříznout [url=php.net/ftruncate]ftruncate()[/url], přidat na konec nový řádek a pak přečtená data. Pokud budeš přidávat předposlední řádek do 100MB souboru, tak už rozdíl mezi mým a lingvikovým řešením poznáš :)
|
||
Hanz56 Profil * |
#4 · Zasláno: 17. 2. 2010, 11:16:16
Jo to je pravda, asi jine reseni nebude. Nevim ale jak to zapsat, v php sem lama:) Jestli bude nejaky php guru tak hodny a napise to?:) Me by to zabralo nejmin tyden nez bych nato prisel jak to napsat:)
Diky |
||
Hanz56 Profil * |
#5 · Zasláno: 17. 2. 2010, 11:18:01
..ne ten soubor je malinkaty, jen par kb
|
||
AM_ Profil |
#6 · Zasláno: 17. 2. 2010, 11:20:09 · Upravil/a: AM_
jen se snaž ;) když to budem dělat za tebe, tak se nic nenaučíš.
budiž ti http://php.net průvodcem Hanz56: „ne ten soubor je malinkaty, jen par kb“ no ale stejně je čistější a jednodušší mé řešení, tak to není důvod dělat složitě a neefektivně:) |
||
lingvik Profil |
#7 · Zasláno: 18. 2. 2010, 12:16:55
AM:
Funkci ftruncate jsem neznal a je fakt, že ořezání je efektivnější. Problém je jenom v tom, že velikost kusu k ořezání je v bytech a ne v řádcích. Proto bych se do toho v žádném případě nepouštěl u maličkých souborů a začátečníkovi bych tu funkci nedoporučil za žádných okolností. Počítání bytů tak, aby to bylo "tak akorát", by se mohlo zvrhnout v pěkný opruz. |
||
AM_ Profil |
#8 · Zasláno: 18. 2. 2010, 13:39:57
lingvik:
nojo, to máš pravdu, nějak jsem se moc nezamýšlel nad konkrétní realizací toho ořezání... není to nic nemožného, ale pro začátečníka nic moc no.. |
||
Hanz56 Profil * |
#9 · Zasláno: 20. 2. 2010, 22:02:38
poresil sem to unkci string replace
|
||
Časová prodleva: 14 let
|
0