Het probleem waar ik mee zit is het volgende:
Ik roep vanuit een bepaalde interface (web, XML of e-mail) een script aan, dat de meegestuurde data uitleest en bepaalde acties, al dan niet naar derde partijen, onderneemt.
Een voorbeeld:
- ik stuur via XML een request voor het maken van een klant-record
- het script maakt intern het klant-record aan
- het script maakt bij externe partij 1 een klant-record aan via een socket-verbinding
- het script maakt bij externe partij 2 een klant-record aan via een socket-verbinding
- het script stuurt mij het resultaat van het interne toevoegen (een handle) terug
Het aanmaken van het eigen, interne record gaat snel, maar het vervolgens aanvragen van een externe handle en wachten op een antwoord hiervan duurt lang, en dat moet meerdere keren gebeuren, terwijl dat eigenlijk op de achtergrond kan gebeuren omdat de externe gegevens niet direct nodig zijn.
Mijn idee om deze onacceptabel lange wachttijden te voorkomen is dus dat ik eerst de interne gegevens op orde maak, dan de twee externe processen 'aanschiet' zonder op antwoord te wachten, en terwijl de externe partijen bezig zijn stuur ik vast de interne handle terug en beeindig ik het script.
Ik kwam uit op het (un)blocken van streams onder PHP met behulp van de functie stream_set_blocking, maar ik kan nergens documentatie vinden over het hoe en wat hiervan.
Mijn voornaamste vraag, buiten de vraag of dit inderdaad de manier is om mijn probleem op te lossen, is: hoe vang ik de resultaten van de socketstreams af? Ik kan wel parallel twee sockets openen, maar wanneer en hoe moet ik het antwoord uitlezen?
Ik roep vanuit een bepaalde interface (web, XML of e-mail) een script aan, dat de meegestuurde data uitleest en bepaalde acties, al dan niet naar derde partijen, onderneemt.
Een voorbeeld:
- ik stuur via XML een request voor het maken van een klant-record
- het script maakt intern het klant-record aan
- het script maakt bij externe partij 1 een klant-record aan via een socket-verbinding
- het script maakt bij externe partij 2 een klant-record aan via een socket-verbinding
- het script stuurt mij het resultaat van het interne toevoegen (een handle) terug
Het aanmaken van het eigen, interne record gaat snel, maar het vervolgens aanvragen van een externe handle en wachten op een antwoord hiervan duurt lang, en dat moet meerdere keren gebeuren, terwijl dat eigenlijk op de achtergrond kan gebeuren omdat de externe gegevens niet direct nodig zijn.
Mijn idee om deze onacceptabel lange wachttijden te voorkomen is dus dat ik eerst de interne gegevens op orde maak, dan de twee externe processen 'aanschiet' zonder op antwoord te wachten, en terwijl de externe partijen bezig zijn stuur ik vast de interne handle terug en beeindig ik het script.
Ik kwam uit op het (un)blocken van streams onder PHP met behulp van de functie stream_set_blocking, maar ik kan nergens documentatie vinden over het hoe en wat hiervan.
Mijn voornaamste vraag, buiten de vraag of dit inderdaad de manier is om mijn probleem op te lossen, is: hoe vang ik de resultaten van de socketstreams af? Ik kan wel parallel twee sockets openen, maar wanneer en hoe moet ik het antwoord uitlezen?