ugrás a tartalomhoz

PHP szkrirpt prioritásának beállítása

vbence · 2008. Már. 23. (V), 11.19
Sziasztok!

Egy butaság fogalmazódott meg bennem az imént: nem lenne értelme egy php szkript elején (vagy akár hataccessből) beállítani a szkript processének prioritását?

Például tételezzük fel, hogy a keresés a legCPUigényesebb művelet az oldaladon (mondjuk 20 cikk-megnyitással egyenértékű). Ha le tudnánk szállítani az adott művelet (keresés) prioritását, akkor nem szenvedne a másik X user eközben, bár a keresés egy kicsit több ideig tartana, de csak annyival, amennyi tényleges kérés érkezik eközben a könnyen teljesíthető fajtából.

Persze, tudom, hogy a mysql-ben történik a munka oroszlánrésze, ami más process, mint a PHP. Ott talán értelme lenne külön userrel elérni a DB-t. Ott a lassú queryknek szentelt user élvezne kisebb prioritást, mint a normál user.

És mi van az időkorláttal. Mi lenne, ha nem lőnénk ki 30 mp után a szkripteket, hanem 20 másodperc után lesűlyesztjük a prioritást és 40 továbi másodperc után lőnénk ki? Így egy blokoló művelet (mondkuk más szerverről adatok lekérése) számára több időnk lenne, és egy elszabadult szkript sem eszik meg annyi értékes erőforrást a 40 másodperc IDLE prioritással, mint még 10 másodperc teljesértékű futással.

Vagy ha már itt tartunk: miért idő limit van, miért nem CPU idő limit (rsuage)? Elég egyszerűen meg lehetne különbötetni egy erőforrászabáló szkriptet egy olyantól, aki csak várakozik (pl. a fenti szerver-szerver kommunikáció).

Ötletek? Esetleg hallott / használ valaki létező megoldást?

B
 
1

Lehet, lehet...

janoszen · 2008. Már. 23. (V), 11.23
Erre a Linuxos nice vagy renice parancsok szolgálhatnak. Azt semmiképpen nem fogod tudni elkerülni, hogy minimum egy PHP kiterjesztést írj, hiszen pl FastCGI-nél kívülről nem látod a diszkrét végrehajtásokat, csak a processzeket amik futtatják őket. Az a baj, hogy ezzel nem oldottad meg az eredeti problémát. Méghozzá azt, hogy vagy hülye programozók dolgoznak a szerveredre, akkor ugyanis ez sem fog segíteni, max még több anyázást kapsz, vagy értelmes programozók dolgoznak a szervereden és akkor ők tudják, hogy mikor mit szabad csinálni.