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: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
1. PHP sam w sobie robi takie "freeMemory()" - poczytaj o GC. Nie zmienia to jednak faktu, że nadal możesz doprowadzać czy to do wycieków pamięci czy poprzez zachowywanie (w jakiś zapewne niebezpośredni sposó(IMG:style_emoticons/default/cool.gif) referencji do jakiś obiektów uniemożliwiać GC-owi zwolnienie zasobów zajmowanych przez nie.
2. Już samo wykorzystanie foreach'a może negatywnie wpływać na zużycie pamięci. 3. Domyślam się, że prawdziwy kod jest sporawy, ale bez pokazania go nie ma możliwości zasugerowania jakiegokolwiek sensownego rozwiązania. |
|
|
|
athabus Duże zużycie ram przy skrypcie wywołanym w konsoli 25.04.2017, 10:43:00
nospor 1)
A czy to API nie posiada metody, ktora pozwala ... 25.04.2017, 11:42:43
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
athabus Dzięki Crozin - Garbage Collector znam, ale chyba ... 26.04.2017, 08:33:56 ![]() ![]() |
|
Aktualny czas: 29.12.2025 - 08:53 |