![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 31.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 31.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował Rozpalacz 9.02.2015, 12:50:44 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
nie napisałeś co logujesz, ile tego jest. Dlaczego akurat 2tyś?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 31.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
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ę ![]() czyli file_put_contents i file_get_contents do { while (file_put_contents === false) Ale nie wiem czy to dobre rozwiązanie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 05:47 |