Aszinkron php kérés
Heló!
Hogy lehetséges aszinkron php kérést futtatni?
Van egy MYSQL kérésem, ami körülbelül 10 másodpercet vesz igénybe átlagos esetben.
Egy temp táblába írja be az adatokat, hogy ne kelljen mindig az egész, lassú lekérést futtani.
Viszont hogyha változás állbe a lekérést taralmazó táblákban, az egész temp táblát újra kéne generálnom( ami ugye 10 másodperc).
Ennek a sikerességét nem szükséges ellenőriznem, tehát jó lenne, hogyha ezt a tábla létrehozást/kitöltést egy külön függvénybe, vagy fájlba rakhatnám, és csak el kellene indítani.
Cron használatán gondolkoztam, ami mindig ellenőrzi hogy szükség van-e a tábla frissítésére, de az túl nagy overheadet okozna, kell lennie egy egyszerűbb megoldásnak is.
Bármi javaslat?
■ Hogy lehetséges aszinkron php kérést futtatni?
Van egy MYSQL kérésem, ami körülbelül 10 másodpercet vesz igénybe átlagos esetben.
Egy temp táblába írja be az adatokat, hogy ne kelljen mindig az egész, lassú lekérést futtani.
Viszont hogyha változás állbe a lekérést taralmazó táblákban, az egész temp táblát újra kéne generálnom( ami ugye 10 másodperc).
Ennek a sikerességét nem szükséges ellenőriznem, tehát jó lenne, hogyha ezt a tábla létrehozást/kitöltést egy külön függvénybe, vagy fájlba rakhatnám, és csak el kellene indítani.
Cron használatán gondolkoztam, ami mindig ellenőrzi hogy szükség van-e a tábla frissítésére, de az túl nagy overheadet okozna, kell lennie egy egyszerűbb megoldásnak is.
Bármi javaslat?
Program execution functions
Ha a temporális táblát INSERT-tel töltöd fel, érdemes előtte kikapcsolni az indexelést, és csak utólag bekapcsolni, csodákra képes sebességügyileg (mert ha be van kapcsolva, minden INSERT művelet után újraindexel).
És ha már itt tartunk, akkor
A legelső dolog, az, hogy bár
Ha nem PHP-ról lenne szó, akkor a kézenfekvő megoldás az ilyen jellegű problémára háttérfolyamat írása lenne.
PHP környezetben azonban tényleg az lenne a legegyszerűbb, ha cronnal periodikusan hívnád a szkriptet. Miért gondolod, hogy nagy lenne az overhead? Csináld úgy az ellenőrzést, hogy a változások írásakor érvénytelennek jelölöd a gyorstárat, és így az ellenőrzés már csak egy triviális lekérdezést futtatna.
Ha ez nem működik, akkor elágaztathatod a kódot, hogy kvázi aszinkron végezd a munkát, illetve léteznek aszinkron adatbáziskérések is.
TRIGGER
"processek" indításánál volt
$pid = exec("php run.php >> log.txt & echo $!");
a $pid az elindult folymat pid-jét tartalmazza, amivel később le tudod kérdezni, hogy fut e még, ha szükséges.