Ik wil via internet wat hardware aansturen. Deze hardware is bereikbaar via ethernet, dankzij een Netburner UART -> Ethernet, zodat ik direct kan communiceren. Deze kastjes zijn via internet aangesloten zodat ik via een website dat ding kan aansturen. Commando's sturen gaat opzich prima door een socket open te zetten, commando sturen en weer sluiten.
Nu wil ik echter ook alle uitgaande berichten ontvangen (bijvoorbeeld statusberichten), maar wel commando's kunnen blijven aansturen.
Als ik de verbinding open met een while-lus, en blijf luisteren, haalt hij wel data binnen, maar op een gegeven komt er geen data meer en krijgt hij een time-out. Bovendien is deze lus blocking, dus als ik die continu laat binnenhalen, kan ik geen data meer versturen via dezelfde stream.
Hebben jullie hier een goede oplossing voor? Ik gebruik nu stream_socket_client() voor het verbinden, stream_get_contents() voor lezen en fwrite() voor schrijven.
Is PHP wel een goede manier om 24/7 zo'n stream open te houden, of zou iets van een queue met te versturen berichten, die steeds tussen het luisteren door komt iets zijn?
Nu wil ik echter ook alle uitgaande berichten ontvangen (bijvoorbeeld statusberichten), maar wel commando's kunnen blijven aansturen.
Als ik de verbinding open met een while-lus, en blijf luisteren, haalt hij wel data binnen, maar op een gegeven komt er geen data meer en krijgt hij een time-out. Bovendien is deze lus blocking, dus als ik die continu laat binnenhalen, kan ik geen data meer versturen via dezelfde stream.
Hebben jullie hier een goede oplossing voor? Ik gebruik nu stream_socket_client() voor het verbinden, stream_get_contents() voor lezen en fwrite() voor schrijven.
Is PHP wel een goede manier om 24/7 zo'n stream open te houden, of zou iets van een queue met te versturen berichten, die steeds tussen het luisteren door komt iets zijn?