Autor Zpráva
Enko
Profil
AHoj,
mám hotový PHP skript, který přes knihovnu PHPExcel generuje MS Excel soubory. Vše funguje bezvadně, jen jeden skript, který generuje tabulku o velikosti 50 sloupců a cca 5tis řádků spotřebovává obrovské množství RAMky. (Cca 250MB). A ne, nejde to snížit. Jedna buňka zabere při generování excelu cca 1kB.
Nastavil jsem si velikost RAM pro PHP této aplikace na hodnotu 512MB. Nevíte, jak je to s uvolňování paměti? Co když spustí víc lidí najednou tento skript? Zabere každé další spuštění další paměť nebo se paměť uvolňuje okamžitě? Případně máte nějaké best practice ohledně scriptů, které spotřebovávají velké množství RAM?

Děkuji
Alphard
Profil
Typicky (když pominu minoritní případy, kdy si PHP script hraje na server) se PHP o konkurenční přístup nestará. Pokud tentýž požadavek spustí více lidí najednou, spustí se vícekrát tentýž script, který si pro sebe naalokuje potřebnou paměť. Všechna paměť je uvolněna nejpozději po doběhnutí daného scriptu.

Doporučení by vyžadovala víc informací, je ten problém reálný, nebo hypotetický? Pokud nejde nároky snížit, tak požadavky na daný script řadit do fronty. Do vytváření workerů apod. se asi pouštět nebudete, ale vytvoření fronty jako nouzovku si umím představit naimplementovat třeba i pomocí databáze.
Enko
Profil
Alphard:
Děkuji za odpověď. Problém reálný není, spíše hypotetický. Může k němu dojít, nicméně pravděpodobnost je naprosto zanedbatelná. Tudíž asi nejlepší řešení bude zvýšit ještě RAM pro PHP, jen pro jistotu.
Jen teoreticky, jak vypadá vytvoření fronty? Máte někde nějaký příklad?

Moc děkuju za odpověď.


V praxi se jedná o poslání požadavku do MySQL databáze, která vrátí data do asociativního pole a ta pak uložím do MS Excelu, který pošlu uživateli hlavičkou do stažení.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: