Om foto's uit een IP-camera te trekken heb ik een PHP script gemaakt.
Dit PHP script haalt 5 foto's (achter elkaar) uit de camera.
Het "probleem" is dat dit proces redelijk wat tijd (meerdere seconden) in beslag neemt...
Ik zou daarom graag deze functionaliteit willen "uitfaseren" naar een los PHP scriptje.
Vervolgens wil ik vanuit de hoofd-PHP-file dat 2e scriptje laten uitvoeren wat op vervolgens "op het gemak" zijn ding gaat doen. Ondertussen kan het hoofdprogramma gewoon lekker doordraaien zonder tijdsverlies.
Hopelijk ben ik een beetje duidelijk met m'n verhaal?! En nog hopelijker ;) kunnen jullie me hiermee helpen...
Roep je het "hoofd PHP script" via een browser aan, of via een cron-job?
Via een browser zou je gewoon (a)synchroon het foto script ook vanuit de browser aan kunnen roepen.
Bij een cron-job kun je een shell_exec doen via PHP CLI naar het foto script, met een "&" er achter ( https://stackoverflow.com/questions/222414/asynchronous-shell-exec-in-php#222445 - Linux). Maar zou het niet dan logischer zijn om voor de foto's een eigen cron-job onder te brengen. Stel nu dat het "hoofd PHP script" 2x wordt aangeroepen, dan ga je nu 2x dezelfde foto's ophalen. Als je gewoon vanuit het "hoofd PHP script" een vlaggetje zet dat er foto's opgehaald moeten worden, dan kan het foto-cron-script daarmee aan de gang. Zijn er 2 hoofd scripts die foto's willen, dan hoeft ie maar 1x foto's op te halen.
Het "hoofd PHP script" wordt aangeroepen via een extern "apparaatje". Daar heb ik dus geen invloed op.
Maar eigenlijk wil ik het zo houden dat het hoofd-script dus alles aanroept. Alleen met een "uitsplitsing" van het foto ophalen naar een nieuw script wat dus geen vertraging meer oplevert. Kan dat shell_exec niet ook gewoon vanuit een PHP script?
Een CRON-job komt in dit verhaal niet aan bod omdat alles "dynamisch" en "on the fly" moet gebeuren. Soms uren niets, en soms binnen 15 min. meerdere malen...
Ik wil eigenlijk gewoon een "achtergrond-taak" uitzetten d.m.v. dat 2e scriptje (waarmee de foto's van de IP-camera worden gehaald).
Zodra de hoofd-PHP die "achtergrond-taak" eenmaal heeft opgestart hoeft hij daar niet meer naar om te kijken. Veel ingewikkelder wil ik het niet maken.
Idealiter staan cronscripts niet in de publieke directory maar sinds het een lokaal niet-geroutered IP is (en de webserver alleen lokaal bereikbaar is tenzij je poorten hebt gemapt?) maakt dit niet zoveel uit.