![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuje czyścić wielokrotnie mały plik. ( w pętli, Zależnie od warunku ...)
Waży jakieś 0.22-0.30kB i zawiera cookie. Na początku gdy to robiłem nie przemyślałem i użyłem odrazu: file_put_contents('./plik.txt', ''); Jednak w pętli to się okazuje wolniejsze. Jak wiadomo to wrapper, i ma w sobie fopen(), fwrite(), fclose(); + samo w sobie jest czwartą funkcją I tu pytanie. Samo... fopen('./plik.txt', 'w'); Robi dokładnie to samo. Czy jest jakiś konkretny cel żeby użyć w moim wypadku fclose(), czy nie muszę? Jak przypominam, plik waży niecałe ⅓kB. Pytam bo zawsze file_put_contents() uzywalem jako ze latwiejsze do zapamietania. Ten post edytował KsaR 20.03.2016, 16:56:03 -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
no skoro otwierasz plik to wypadało by zamknąć nie?
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
no skoro otwierasz plik to wypadało by zamknąć nie? Gdy petla skończy kilkanaście tysięcy okrążeń skrypt jest praktycznie zatrzymywany bo zrobił co trzeba. I prawie co każde okrążenie jest czyszczony plik (zależy od warunku). + tak jak pisalem plik wazy mniej niz 1kB więc czy jest sens go zamykac co chwile skoro glownie jest czyszczony? (Jedynie Curl tam dodaje dane). Oczywiście widze sens gdyby to ważyło 1mB albo 1+gB ale ?kB?? -- EDIT, Inaczej: W petli jest czyszczony co chwile plik, przez: fopen('./plik.txt', 'w'); wedlug dokumentacji 'w' oznacza tylko do zapisu(NIE ODCZYTU) oraz ucinanie pliku do 0b. I tak sie dzieje. Plik mimo wszystko gdy cos zawiera to poniżej 1kB. Czy jest tu logiczny sens zamykania niego w trybie 'w', prawie co każde okrążenie a jest ich kilkanaście tysięcy? Ten post edytował KsaR 20.03.2016, 17:21:39 -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
kurna... Co oznacza czyszczenie? Powiedz/pokaż lepiej co się dzieje z tym plikiem. Czy jest to tylko jakaś flaga w postaci pliku, czy zapisujesz coś tam...
Z Twojego pytania nie wynika nic co chcesz zrobić... |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
kurna... Co oznacza czyszczenie? Powiedz/pokaż lepiej co się dzieje z tym plikiem. Czy jest to tylko jakaś flaga w postaci pliku, czy zapisujesz coś tam... Z Twojego pytania nie wynika nic co chcesz zrobić... To wszystko jest. A więc trzeci raz: Mam sobie "plik.txt" Leci sobie petla foreach ktora ma ponad 10,000 elementów i czasem dochodzi do jej(ilosc elementow/obiegów pętli). Za kazdym przelotem jest wysylane rzadanie cURL; I za kazdym razem zapisuje ono do pliku "plik.txt" cookie. JEDNAK, co kilka kroków muszę robić "plik.txt" pusty, coś jak np.: $plik = ''; ... I wczesniej robilem tak: file_put_contents('./plik.txt', ''); Jednak to jest nie oplacalne w pętli, co innego dla pojedynczego wywolania. A wiec robie: fopen('./plik.txt', 'w'); Ktore mi czysci ten plik... (Ten plik odczytuje tylko cURL oraz tam zapisuje) Tak więc plik wazy okolo 0.22kB Czy jest tu sens uzywania prawie co kazde okrazenie petli fclose(...); ? W trybie 'w' dla pliku <1kB?? -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
fopen przed pętlą,
fclose za pętlą. Tylko musisz czyścić w odpowiednich momentach co tam chcesz W pętli co tam sobie chcesz. Ten post edytował Pyton_000 20.03.2016, 20:34:53 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie tak jak napisał Pyton_000, logiczne jest przecież, że bez sensu otwierać n razy plik i tworzyć uchwyt do niego skoro robisz cały czas operację na tym samym pliku. A jak nie użyjesz fclose, to na rożnych systemach czasem występuje problem np na Windows
![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
Będę szczery, nikt nie był nawet blisko... (Więc chyba nadal nikt nie zrozumiał o co mi chodzi)...
Ten skrypt jednolinijowy: Czyści zawartość plik.txt (zostawia go pustym) I działa to mniej więcej jak:
Dodatkowo dodam, Plik ten zawiera cookie(jak pisałem na początku), z sesją dla cURL-a. Jednak tę sesję muszę kasowac (wraz z cookie) co kilka obiegów pętli. I tworzyć na nowo... Więc nie ma czegoś takiego jak fopen przed petla... (Bo by raz kasowalo) ani fclose za jako że jest otwierany trybem do zapisu oraz waży 0.22kB więc nic nie zrobi i tak... Pytanie zadałem bo nie miałem pewności czy zawsze trzeba zamykać (lub i za każdym obiegiem) Ale po przemyśleniu i testach nie trzeba jednak. Ten post edytował KsaR 21.03.2016, 18:53:37 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
bo robisz to źle, w pętli masz kasować zawartość pliku, a nie otwierać n razy czyli ftruncate($fp, 0);
![]() My zrozumieliśmy, a Ty nie ![]() fclose zamyka uchwyt do pliku a nie plik, tryb nie ma znaczenia. To są podstawy kolego. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
bo robisz to źle, w pętli masz kasować zawartość pliku, a nie otwierać n razy czyli ftruncate($fp, 0); ![]() My zrozumieliśmy, a Ty nie ![]() fclose zamyka uchwyt do pliku a nie plik, tryb nie ma znaczenia. To są podstawy kolego. Zauwaz ze ta funkcja pierwszy raz padla wiec dopiero chyba zrozumiales, Btw. Cytat If you want to empty a file of it's contents bare in mind that opening a file in w mode truncates the file automatically, so instead of doing...
You can just do...
http://php.net/manual/pl/function.ftruncate.php ^ 1szy komentarz... Czyli ten komentarz + twoja wypowiedz ze zamykac niejako rozwiązuje moje pytanie. -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
przecież Pyton_000 napisał
Cytat Tylko musisz czyścić w odpowiednich momentach co tam chcesz
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.06.2025 - 17:51 |