• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP - logowanie wyniku skryptu w bazie danych

Object Storage Arubacloud
0 głosów
175 wizyt
pytanie zadane 8 lutego 2019 w PHP przez Krecioo Nowicjusz (240 p.)
zmienione kategorie 8 lutego 2019 przez Arkadiusz Waluk
Witam,

ostatnio otrzymałem dość ciekawe zadanie od pewnej firmy. Posiada ona gotowy skrypt, który zaczytuje pliki xlsx, xls, xml i csv do bazy danych. Na początku działało to świetnie, ale firma rozrosła się i już nie wczytują plików po 1000 wierszy a po 300 tyś. i więcej. Skrypt zwalniał tym bardziej im więcej wierszy zaczytał.

Okazało się, że problemem było logowanie komunikatów. Ktoś napisał zapytanie w następujący sposób:

UPDATE log SET log_txt = log_txt || {$statement} WHERE ...

Wiadomo jeśli skrypt wypluwał mało komunikatów baza jakoś dawała radę, ale im większy plik tym więcej komunikatów trzeba było dopisać i baza zaczęła się dławić na tym zapytaniu.

Normalnie rozwiązałbym ten problem stosując ob_start() oraz ob_get_content(). Niestety założenia są takie, że każdy komunikat ma być natychmiast wyświetlony w widoku. Wymusza to używanie ob_flush() po każdym wygenerowanym komunikacie, a co za tym idzie uniemożliwia użycie powyższej metody.

Rozwiązaniem  mogłoby być dopisywanie każdego komunikatu do jakiegoś pliku za pomocą fopen z atrybutem a i fpust. Sprawdziłem i nie jest to nawet aż tak obciążające. Różnica miedzy odpaleniem skryptu wczytującego 50000 wierszy do bazy z logowaniem do pliku, a bez wynosi około pół sekundy. Niestety założenie jest takie, że wszystkie logi mają znajdować się w bazie danych, a próba zaczytania do bazy zawartości powstałego pliku wywala mi Out of Memory.

To też nie byłoby problemem ale zarząd firmy nie chce mi dać dostępu do serwera, administrator delikatnie mówiąc nie ogarnia, a próby zmiany ustawień php.ini przez ini_set(memory_limit) nie dają rezultatów (najprawdopodobniej php jest hamowany przez apache).

I tutaj w końcu pojawia się moje pytanie. Czy ma ktoś pomysł jak ugryźć ten temat z innej strony?

1 odpowiedź

0 głosów
odpowiedź 8 lutego 2019 przez HaKIM Szeryf (87,590 p.)
edycja 8 lutego 2019 przez HaKIM
IMO. to nie ma co kombinować. Jeżeli uważasz, że Twoje rozwiązanie jest jednym z lepszych w Twojej sytuacji to starałbym się za wszelką cenę przekonać zarząd o daniu Ci dostępu do serwera albo zmianie ich administratora.

Później będziesz musiał się z tymi rozwiązaniami naokoło mierzyć, co może odbić się bardzo niekorzystnie na dalszym rozwijaniu projektu a również Twoim samopoczuciu przez pracę z potworkiem.

Reasumując; idź do zarządu i wyłóż im wszystkie argumenty, które masz, aby dano Ci dostęp do serwera i wszystkie konsekwencje rozwiązania naokoło. Dodatkowo, możesz zasugerować (kopnięcie w zad marnego administratora aby ruszył tyłek do pracy) OR (zlececnie rekrutacji kogoś z prawdziwego zdarzenia).

Podobne pytania

0 głosów
1 odpowiedź 399 wizyt
pytanie zadane 21 września 2016 w PHP przez Dawid Kacprzak Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 94 wizyt
0 głosów
0 odpowiedzi 195 wizyt
pytanie zadane 17 maja 2018 w PHP przez Anakin_Skywalker Początkujący (280 p.)

92,568 zapytań

141,422 odpowiedzi

319,639 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...