Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]zapis do nowego pliku, dalej ten sam problem !!!!!!!!! :-
shreker
post 3.07.2008, 16:08:06
Post #1





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


Witam ! mam pewien problem. Mam następujący kod:

Kod
$plik = 'dane_03-07-2008.txt';

      (pominięta część kodu)

$fp = fopen($plik, "a");
@flock($fp, 2);
@fwrite($fp, $dane1. ' || '. $dane2.' || '. $dane3. ' || ' . "\n");
@flock($fp, 3);
@fclose($fp);


Wiadomo, dane pobierane są ze zmiennych i zapisywane do pliku.
Chodzi o to czy można zrobić coś takiego że jeżeli wielkość pliku z zapisywanymi danymi przekroczy określoną wielkość (np 1 MB) to automatycznie zapisywnie danych zostanie "zablokowane", zostanie utworzony nowy plik z nową datą utworzenia (np. dane_10-07-2008.txt) i do niego będą zapisywane kolejne dane. A gdy ten nowy osiągnie zadaną wielkość to zostanie utworzony nowy , itd ...
Jestem kompletnie początkujący i szczerze mówiąc nie bardzo wiem jak to można zrobić, proszę o pomoc :-)

Ten post edytował shreker 3.07.2008, 17:01:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
sebekzosw
post 3.07.2008, 16:27:40
Post #2





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $plik = "dane_03-07-2008.txt"; //aktualny plik
  3.  
  4. if(filesize($plik) >= 1048576) {
  5. //tworzenie nowego pliku
  6. } else {
  7. //aktualizacja aktualnego pliku
  8. )
  9. ?>
Go to the top of the page
+Quote Post
shreker
post 3.07.2008, 16:34:10
Post #3





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


Sprawdziłem , niestety ale nie działa, po przekroczeniu danej wielkości nie zostaje utworzony nowy plik:-(((((
Kod
$plik = 'dane_03-07-2008.txt';

if(filesize($plik) >= 1048576) {
     //tworzenie nowego pliku
} else {
     //aktualizacja aktualnego pliku


      (pominięta część kodu)

$fp = fopen($plik, "a");
@flock($fp, 2);
@fwrite($fp, $dane1. ' || '. $dane2.' || '. $dane3. ' || ' . "\n");
@flock($fp, 3);
@fclose($fp);
}


Ten post edytował shreker 3.07.2008, 16:59:51
Go to the top of the page
+Quote Post
phpion
post 3.07.2008, 18:19:41
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Bez urazy ale czy wstawiasz jakiś kod w miejsce:
  1. <?php
  2. //tworzenie nowego pliku
  3. ?>

?
Go to the top of the page
+Quote Post
shreker
post 3.07.2008, 18:23:49
Post #5





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


;-) Oczywiście że tak. próbowałem tam wstawić kod tworzący nowy plik, ale chyba coś pokręciłem, albo coś robię źle. Proszę o pomoc jak mam to zrobić. Zresztą gdybym wiedział jak to samemu zrobić to bym nie pisał. Jeśli ktoś ma pomysł to proszę o pomoc.
Go to the top of the page
+Quote Post
phpion
post 3.07.2008, 18:24:57
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Pokaż więc jak to robisz, a nie oczekuj gotowca. Wtedy wspólnie dojdziemy do działającego rozwiązania.
Go to the top of the page
+Quote Post
shreker
post 3.07.2008, 18:30:31
Post #7





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


Mam coś takiego:
Kod
$plik = 'dane_03-07-2008.txt';
  
  if(filesize($plik) >= 1048576) {
$fpn = fopen($plik.date("Y.m.d") "a");
  @flock($fpn, 2);
  @fwrite($fpn, $dane1. ' || '. $dane2.' || '. $dane3. ' || ' . "\n");
  @flock($fpn, 3);
  @fclose($fpn);
      
  } else {
      //aktualizacja aktualnego pliku
  
  
       (pominięta część kodu)
  
  $fp = fopen($plik, "a");
  @flock($fp, 2);
  @fwrite($fp, $dane1. ' || '. $dane2.' || '. $dane3. ' || ' . "\n");
  @flock($fp, 3);
  @fclose($fp);
}


Na pewno coś robię źle, tylko nie mam pojęcia jak z tym poradzić, w php dopiero raczkuję.

Ten post edytował shreker 3.07.2008, 19:11:28
Go to the top of the page
+Quote Post
kaem
post 3.07.2008, 19:49:52
Post #8





Grupa: Zarejestrowani
Postów: 248
Pomógł: 38
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


Po date("Y.m.d") nie masz przecinka. Przydało by się, żebyś sprawdzał czy udało się otworzyć lub utworzyć plik.
  1. <?php
  2. if(!$fpn)
  3. { 
  4. exit; //czy cos takiego
  5. }
  6. else
  7. {
  8. //kod jeśli pomyślnie otworzono plik
  9. }
  10. ?>


Ten post edytował kaem 3.07.2008, 19:51:23
Go to the top of the page
+Quote Post
chlebik
post 4.07.2008, 01:15:46
Post #9





Grupa: Zarejestrowani
Postów: 113
Pomógł: 5
Dołączył: 12.09.2006
Skąd: Pruszków/Warszawa

Ostrzeżenie: (0%)
-----


Poza tym przy formie date("Y.m.d") to nazwa pliku bedzie zawierala wiecej niz 1 kropke a tak byc nie moze. Dorzuc po tym if file_exists().


--------------------
"Człowiek dążący do swego celu może być skuteczny tylko w przypadku, jeśli każdą minutę swego życia wykorzysta z maksymalną korzyścią dla osiągnięcia zaplanowanego celu. Jeśli stworzył dla siebie system kar i karze sam siebie za każdą zmarnowaną minutę. Człowiekowi w zupełności wystarczą 3-4 godziny snu, cały pozostały czas może być wykorzystany dla osiągnięcia upragnionego celu." -- Wiktor Suworow
Java devBlog
KulturalnyChlebik
Go to the top of the page
+Quote Post
Pilsener
post 4.07.2008, 08:17:26
Post #10





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat
Na pewno coś robię źle, tylko nie mam pojęcia jak z tym poradzić, w php dopiero raczkuję
- pierwsza rada: nie używaj znaków @ przed funkcjami i sprawdź, czy skonfigurowałeś serwer tak, aby wyświetlał wszystkie błędy i warningi (jak serwer nie wyświetla błędów, to nigdy się nie dowiesz, co jest źle).

Rada druga:
Cytat
Po date("Y.m.d") nie masz przecinka
- ściągnij sobie jakiś edytor do PHP (jest tego mnogo) ze sprawdzaniem i podpowiadaniem składni. Musisz sam dbać o poprawną składnię kodu, bo przecież z każdym zgubionym przecinkiem nie będziesz latał na forum?

Rada trzecia:
Nie twórz pliku przez funkcję fopen, bo nie na wszystkich serwerach to zadziała (zwłaszcza na darmowych tworzenie plików "w locie" bywa mocno ograniczone). Sugeruję touch.

Rada czwarta:
Sprawdzaj, czy plik ma odpowiedni chmod (czy jest edytowalny), czy da się go otworzyć etc.

P.S > używaj odpowiedniego bbcode (PHP)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:45