Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak zrobić logownaie
Forum PHP.pl > Forum > PHP
Rozpalacz
Witam,

mam skrypt dzialaj.php który w trakcie pracy ma logować informacje.
Drugi skrypt czytaj_logi.php będzie uruchamiany w interwale za pomocą ajaxa, pobierał aktualne logi zapisane przez dzialaj.php i wyświetlał na stronie. Próbowałem dwóch sposobów ale żadne nie jest zadowalający.

1. Zapis do bazy danych do tabeli
plus:
mam na bieżąco informacje które mogę pobrać drugim skryptem pobierz_logi.php
minusy:
po każdym wierszu muszę zrobić commit jeśli chcę mieś aktualne dane. Jeśli mam zapisać jakieś 10.000 rekordów, to wydłuży mi to znacznie

Ze względu na wydłużony czas działania odrzuciłem ten sposób

2. Zapis do pliku za pomocą file_put_contents i odczytywanie za pomocą file_get_contents
plusy: szybki zapis i odczyt danych
minusy: próba jednoczesnego zapisu i odczytu kończy się błędem

Ze względu na błędy z jednoczesnym odczytem i zapisem odrzucam ten sposób.

Jaki sposób mogę wykorzystać tutaj? Używacie jakiegoś sprawdzonego sposobu?
Pyton_000
zapis do BD i przesyłanie AJAX-em znacznika czasu ostatniej aktualizacji i pobieranie tylko nowszych rekordów.
BD wydaje się być najlepsza. Ew. Redis i zapis poóźniony. Zbierasz dane w pamięci a Redis sobie zrzuca te dane gdzie ustalisz w tle dzięki czemu masz aktualne dane i automatyczny zapis którego użytkownik nie widzi.

Co do sposobu z plikiem.
  1. file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
Rozpalacz
Kod
FILE_APPEND | LOCK_EX

używam, ale przy odczycie danych wywali się błąd jeśli będą właśnie zapisywane dane do pliku lub jeśli będzie plik czytany to wywali się błąd przy zapisie.

BD wydaje się być najlepszym sposobem, ale jeśli w trakcie działania skryptu zaloguję jakieś 2000 rekordów z commitem to skrypt będzie mi to wykonywał z jakieś 40 sekund dłużej.
Pyton_000
nie napisałeś co logujesz, ile tego jest. Dlaczego akurat 2tyś?
Rozpalacz
Pobieram skryptem w pętli strony internetowe gdzie link
Kod
www.pobioreciestrono.pl/strona=1

stron jest do pobrania jakieś 2000.

W dużym skrócie:
Chciałem logować informację na której aktualnie stronie się znajduje skrypt. Czyli co stronę zapisywac log z informacją "obrabiam stronę X". Drugi skrypt pobierał mi będzie tą informację.

1. Można zrobić z BD, na zasadzie - commituj co 10 i wtedy czas zapisu zmniejszy się 10 krotnie. Ale to nie do końca mi się podoba, gdyż, jedną stronę może ładować 10 sekund a druga sekundę. I jeśli skrypt pędzie pobierał informacje co sekundę to już pojawia się zakłamanie.

2. Można też plikami wykorzystując - nazwałbym to - chamską pętlę smile.gif Jeśli ma problem z odczytem czy zapisem to ponawia.
czyli file_put_contents i file_get_contents
do {

while (file_put_contents === false)

Ale nie wiem czy to dobre rozwiązanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.