PHP exec() lassú, mit ajánlotok helyette?

PHP exec() lassú, mit ajánlotok helyette?
2020-09-21T11:26:29+02:00
2020-09-24T12:25:16+02:00
2022-12-06T13:20:53+01:00
szotyi41
Hello, van egy adott probléma:

HTML fileból szeretnénk gombnyomásra preview képet alkotni, erre találtunk egy eszközt ami a puppeteer.js. Találtunk PHP-s alternatívát is, de az sajnos nem a megfelelő módon működött ezért váltottunk erre. Gombnyomásra exec paranccsal hívom a saját cli-os kódomat ami puppeteer.js-t hívja:

szotyi41/htmlimage

$generator = env('NODE_IMAGE_GENERATOR', '../node_modules/htmlimage-puppeteer/htmlimage.js'); $this->exec = exec("node $generator url=$url width=$width height=$height output=$output type=$type quality=$quality delay=$delay", $cliOutput);
A probléma az, hogy ha kimásolom a parancsot és cli ból indítom akkor 10-30mp alatt lefut.
Viszont ha exec-el futtatom akár 1-2 perc is lehet.

Azt találtam ki, hogy írok egy file figyelőt ahova sorba bekerülnek ezek a parancsok. Ha a file módosítva lett, lefutnak a benne lévő parancsok és törlődnek, kérdés ha ez egy jó megoldás miben írjam hogy ne legyen hasonló probléma? Maradjak a node-nál? Bash? Python? PHP?

Köszönöm a válaszokat!
Mutasd a teljes hozzászólást!
Azt találtam ki, hogy írok egy file figyelőt ahova sorba bekerülnek ezek a parancsok. Ha a file módosítva lett, lefutnak a benne lévő parancsok és törlődnek

Jó irányba indulsz, csak figyelj oda hogy egy fájlt nem tudsz egyszerre két helyről módosítani. Ha nem gondoskodsz a megfelelő lock-olásról, bajok lesznek. Ha pedig lock-olod, akkor lehet azon fog várni míg írni tud majd bele. Én az összes hosszabb műveletet aszinkron végzem el, és adatbázisba teszem az elvégzendő feladatokat. Esetedben a PHP szkripted szúrja be egy táblába mi a feladat, célszerűen kapjon valami azonosítót. Írj egy CRON-t ami X időnként megnézi ezt a táblát, és a függő feladatokat elvégzi. Az adatbázisba mentsd el azt is hol tart a folyamat, nehogy kettő szál álljon neki egyszerre. Megfelelően kialakított tranzakciókkal (READ COMMITTED) jó lesz, a lényeg az hogy ne legyen egy tételhez két párhuzamos művelet-végrehajtás.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd