Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%)
|
Mam taki problem z pogranicza php.
W skrócie na serwerze stoi aplikacja webowa z API. Na tym samym serwerze wywołuję skrypt php w konsoli, który używa tego api do aktualizacji pewnych rzeczy. Cała filozofia skryptu wygląda tak:
Wszystko działa ładnie, ale... problem pojawia się, gdy jest bardzo dużo elementów do aktualizacji (kilkadziesiąt tysięcy wywołań api w pętli). Po prostu z czasem rośnie zużycie ram i wszystko zaczyna działać coraz wolniej i wolniej. Np. przez pierwsze 2-4 minuty mam aktualizacje 2-5 elementów na sekundę, a np. w 20 minucie działania skryptu jest to 1 element na 2 sekundy. Jest jakiś sposób aby tą pamięć jakoś uwolnić z poziomu skryptu konsolowego? Nie wiem ogólnie nawet o co dokładnie pytam - chodzi mi o coś takiego aby zwolnić wszystkie zasoby i iść dalej. Ogólnie myślicie, że problemem jest coś w skrypcie konsolowym czy jednak po prostu bardzo duża ilość zapytań do API powoduje taki efekt? Wydaje mi się, że problem leży raczej w skrypcie konsolowym, bo api za każdym razem jest wywoływane i po wywołaniu w teorii pamięć powinna się zwalniać. Jeśli w czymś może to pomóc to samo api pochodzi ze skryptu Prestashop i chodzi o aktualizację danych produktów, kombinacji etc. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
1)
A czy to API nie posiada metody, ktora pozwala wyslac do update wiecej niz jedno item naraz? 2) Jesli pobierasz kilkadziesiat tysiecy elementow na raz do tablicy, to juz samo to moze poleciec po ramie. Nie masz mozliwosci zczytywania danych z bazy po rekordzie czyli bez korzystania z bufora? |
|
|
|
athabus Duże zużycie ram przy skrypcie wywołanym w konsoli 25.04.2017, 10:43:00
athabus Ad1. Niestety nie posiada. Co gorsza to jest API, ... 25.04.2017, 12:11:04
Crozin Zapewne w pobierzDane bądź updateItem (tak na 90% ... 25.04.2017, 12:13:27
Pyton_000 A nie możesz sobie napisać raw sql które zrobią to... 25.04.2017, 12:34:30
athabus Cytat(Crozin @ 25.04.2017, 13:13:27 )... 25.04.2017, 12:50:22
Crozin 1. PHP sam w sobie robi takie "freeMemory()... 25.04.2017, 16:18:27
athabus Dzięki Crozin - Garbage Collector znam, ale chyba ... 26.04.2017, 08:33:56 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 06:52 |