[php] fopen verbinding open houden

Pagina: 1
Acties:

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18
Oi oi,

Ik ben nuet bezig met een webbased telnet script dingie, dat werkt allemaal prima (verbinding openen, gegevens ophalen, gegevens versturen) maar nadat het script klaar is gaat de verbinding weer dicht.. Gevolg is dus dat ik elke keer als ik ets wil versturen weer een verbinding zou moeten openen, alle vorige commands doorsturen, iets wat me iig niet echt effectief lijkt ;)

Ik heb al een beetje rond zitten kijken maar kan niet echts iets vinden over het open houden van verbindingen, hoewel ik wel wat vond over het gebruik van bash scriptjes, maar ik kan niet echt zeggen dat ik daar veel verstand van heb :)

Word dit dan toch naar een C compiler zoeken en een progje schrijven dat in de achtergrond draait, of weet iemand een andere manier?

[edit] Zie net dat ik fopen heb getyped, dat moet natuurlijk fsockopen zijn..

Verwijderd

je fopen() verbinding zal worden gesloten wanneer je script stopt. Je kan er wel voor zorgen dat je scriptje in de achtergrond blijft draaien, maar dan loop je tegen het probleem op hoe je dan opdrachten aan je php script doorgeeft...

Ik weet niet wat voor IPC mogelijkheden php heeft.

Je zou bijvoorbeeld in C een progje kunnen schrijven dat in de achtergrond draait, een telnet verbinding opzet. Dan gaat het progje slapen totdat het een signaaltje krijgt (onder linux, check signal(2)) van een cgi-c applicatie (dat vervolgens gaat slapen) en dan het commando gaat ophalen ergens vandaan (mysql db ofzo) en vervolgens de uitvoer van het commando ergens naartoe schrijft en een signaaltje stuurt naar het process dat hem een signaaltje heeft gestuurt (volg je me), die wordt dan weer wakker en stuurt de uitvoer door naar de gebruiker. Je zult dan nog wel enkele race-condities moeten oplossen, maar verder moet het mogelijk zijn.

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18
Ja, dat idee had ik ook al idd..
Maar ik voreg me af of het misschien ook makkelijker kan

Ik bedoel, zoals je zelf zecht, zo'n porgrammatje is niet in 3 tellen geschreven, verder heb ik eigenlijk nog nooit c-progjes gemaakt onder linux..
En ik neem aan dat dat niet hetzelfde gaat als in windows ;)

[lampje/edit]
Ik zat me net te bedenkne dat ik misschien wel een php scriptje kan maken dat blijft draaien.. commando's zijn dan op te halen vie aan mysql verbinding of een file..
Dat gaan we even proberen :)

Verwijderd

ja, maar dan moet je wel regelmatig je mysql db checken (afhankelijk van hoe snel je erop wilt reageren tot heel erg snel achterelkaar (inefficent) tot heel lang (maar dan is je responce weer slecht))...

maar het lijkt erop dat je het probleem al wel versimpelt hebt, want zover ik gelezen heb stuur je de output van een commando niet naar de client door?

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18
Op zaterdag 22 september 2001 14:39 schreef lnfinitive het volgende:
ja, maar dan moet je wel regelmatig je mysql db checken (afhankelijk van hoe snel je erop wilt reageren tot heel erg snel achterelkaar (inefficent) tot heel lang (maar dan is je responce weer slecht))...

maar het lijkt erop dat je het probleem al wel versimpelt hebt, want zover ik gelezen heb stuur je de output van een commando niet naar de client door?
Niet alle output, sommige wel..
Dat de load op de databse dan wat hoog word is idd wat vervelend ja.. Maar dit moet niet zo'n probleem zijn aangezien die server voor weinig andere dingen word gebruikt..

Ondertussen zit ik wat inspiratie op te doen door de source van phpChat door te lezen..

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 19-09 17:21
Hey, ik weet een oplossing. Dat ik er nog niet eerder aan gedacht heb:

je ene telnet php scriptje draait altijd. Je kan met php een socket openen. Vervolgens connect je met een andere php scriptje (dat alleen runt als de gebruiker dat scriptje opvraagt) naar die socket toe en geef je het hoofdscript de opdracht een bepaald commando uit te voeren. Die voort het dan vervolgens uit en stuurt de output weer via de socket door naar het php script. Je telnet verbinding hoeft dan niet te sluiten.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]

Pagina: 1