PHP laten triggeren door andere PHP (non blocking)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior PHP Developer Onderwijssoftware SaaS oploss

Senior PHP Developer Onderwijssoftware SaaS oplossing Wat ga je doen als Senior PHP developer? Als Senior PHP Developer uit de omgeving Amsterdam, ga jij werken aan onderwijs-software pakketten voor basis- en het voorgezet onderwijs, en voor volwasseneducatie. Het pakket voor basisonderwijs is een overzichtelijke communicatie tool (Laravel) voor leerkrachten. Met de tool kunnen zij ouders en verzorgers meer betrekken bij de vooruitgang van het kind. Denk hierbij aan nieuwsbrieven, oudergesprekken inplannen, persoonlijke berichten en absentie registratie. De overige pakketten (Symfony) worden aangeboden als een SAAS-online leerplatform. Het geeft leerkrachten de mogelijkheden om extra lesmaterialen van uitgevers om op maat onderwijs

Bekijk vacature »

Medior PHP Developer Energy Services Symfony

Medior PHP Developer Energy Services Symfony Wat ga je doen als Medior PHP Developer? Als Medior PHP Developer uit de omgeving Rotterdam, ga jij werken aan een real-time energievoorziening webportal voor in de agrarische sector. De webportal ontzorgt klanten 24/7 volautomatische aansturing van warmtekrachtkoppeling, warmtepompen en netinkoop. Dit op basis van actuele APX in-en verkoopverplichtingen en onbalansmarktprijzen. Deze webportal levert 5 minuten near-time (bron) meetdata, automatisch ingelezen marktprijzen gas en elektriciteit en doorlopend near-time (op kwartierbasis) geactualiseerde financiële en technische performance rapportages (waaronder rookgasreiniging raakgascondensor monitoring). Hiermee bied jij een "energiedashboard" met alle relevante parameters om optimale economische en technische

Bekijk vacature »

Sjef dresen

sjef dresen

09/08/2018 13:07:16
Quote Anchor link
Beste allemaal,

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...

Alvast super thanks voor 't meedenken!

Groet,

Sjef
 
PHP hulp

PHP hulp

22/03/2019 08:19:19
 
Rob Doemaarwat

Rob Doemaarwat

09/08/2018 13:28:36
Quote Anchor link
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.
 
Sjef dresen

sjef dresen

09/08/2018 13:57:50
Quote Anchor link
Bedankt voor je snelle reactie Rob!

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...

Gr,

Sjef
 
Thomas van den Heuvel

Thomas van den Heuvel

09/08/2018 14:13:27
Quote Anchor link
Quote:
Als je gewoon vanuit het "hoofd PHP script" een vlaggetje zet

Of misschien een queue in de vorm van een database-tabelletje als een soort van wachtrij? Lijkt me sowieso handig om ergens voortgang te tracken.
 
Sjef dresen

sjef dresen

09/08/2018 14:16:57
Quote Anchor link
Hoezo zou dat handig zijn Thomas?

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.
 
Rob Doemaarwat

Rob Doemaarwat

09/08/2018 14:26:00
Quote Anchor link
Dan zou ik die shell_exec met background "&" gebruiken. Fire & forget.
 
Sjef dresen

sjef dresen

09/08/2018 15:02:38
Quote Anchor link
Thanks!

Kan het zijn dat shell_exec geblokkeerd is? (op de NAS)
Ik krijg 't in ieder geval niet werkend...

Edit:


Ah, met cURL werkt het wel. Nice :-)
Er zit alleen 1 sec. vertraging in... Maar schijnbaar is dat normaal?!
Achja, het werkt in ieder geval wel!

Merci allemaal voor 't meedenken.

Voor de compleetheid hierbij de oplossing:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://10.10.10.10/cam.php');
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_exec($ch);
curl_close($ch);
Gewijzigd op 09/08/2018 15:44:18 door sjef dresen
 
Thomas van den Heuvel

Thomas van den Heuvel

09/08/2018 16:13:41
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.