Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Obsługa strumienia php://input + wget
lorak110786
post
Post #1





Grupa: Nieautoryzowani
Postów: 34
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Koszalin/Poznań

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


Sprawa wygląda tak:
Codziennie o 2:00 na serwerach Windows odpala się skrypt, który wysyła do aplikacji php za pomocą wget-a logi z serwera. Wygląda to w skrócie tak:
wget --no-cache -O wgetlog.html --post-file=jakis_log.txt

Aplikacja służy do rejestrowania logów w bazie. Początek aplikacji wygląda tak:
  1. $LINIE = file('php://input');


Później log jest szatkowany i obslugiwany. Chciałbym aby plik który przyjdzie do php://input był odkładany w katalogu z aplikacją (w celu jego późniejszego wysłania). Teraz wygląda to tak:
  1. $nazwa_pliku = "../logi/" .strtolower($serwer). "_eventlog_" .date("Y-m-d"). ".txt";
  2. if ($plik = fopen($nazwa_pliku, "w")) {
  3. if (is_writeable($nazwa_pliku)) {
  4. for ($zapisane = 0; $zapisane < sizeof($LINIE); $zapisane++) {
  5. fwrite($plik, $LINIE[$zapisane]);
  6. }
  7. }
  8. }
  9. fclose($plik);


To działa, ale wiem że ta metoda jest licha. Czy są jakieś funkcje które bezpośrednio zapiszą to co jest w php://input do pliku tekstowego? Znalazłem funkcję move_uploaded_file() ale jakoś to nie działa za bardzo. Przeryłem manulal php i moje wątpliwości nie zostały rozwiane. Ma ktoś jakiś pomysł?

Ten post edytował lorak110786 26.11.2009, 20:18:13
Go to the top of the page
+Quote Post
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


file_get_contents + file_put_contents

Nie wiem, czy o to chodziło ponieważ nie rozumiem pytania.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
lorak110786
post
Post #3





Grupa: Nieautoryzowani
Postów: 34
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Koszalin/Poznań

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


Niezupełnie. Chodzi mi o to czy da się jakoś zebrać plik ze strumienia php://include i od razu zapisać go w niezmienionej postaci na serwerze na którym jest aplikacja, bez używania funkcji fopen() i fwrite()
Go to the top of the page
+Quote Post
Zyx
post
Post #4





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Takie zapisywanie w niezmienionej postaci polega właśnie na ręcznym zapisaniu treści we wskazanym miejscu. Powinno to być logiczne - żeby system Ci to zapisał, musisz mu powiedzieć:

1. Że ma zapisać.
2. Gdzie ma zapisać.
3. Co ma zapisać.

Czyli de facto zrobić fopen() + fwrite() lub ew. file_put_contents(). Jaka jeszcze miałaby być inna metoda, i co ważniejsze - po co? Standardowe wejście, jak sama nazwa wskazuje, jest strumieniem wejściowym, czyli przeznaczonym do odczytania przez aplikację. Od strony systemu operacyjnego jest to normalny deskryptor otwartego pliku, identyczny jak ten, który się robi przy otwieraniu pliku do odczytu, tyle że "tworzony" przez system operacyjny i skojarzony np. z wyjściem innej aplikacji, mówiąc obrazowo. Skoro jest to dokładnie to samo, nie może być traktowane w jakiś wyjątkowo specjalny sposób, gdyż inaczej wszystkie deskryptory: pliki, gniazda sieciowe itd. powinny mieć możliwość zrzucania czytanej zawartości do innego pliku, tylko tu rodzi się pytanie: po diabła ma się tym zajmować system operacyjny, skoro programista może sam to sobie zaimplementować bez problemu, gdy mu jest potrzebne?


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
darko
post
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Rozumiem, że tu nic nie znalazłeśquestionmark.gif


--------------------
Nie pomagam na pw, tylko forum.
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 Aktualny czas: 20.08.2025 - 08:42