Toon posts:

[php] moeilijk: communicatie tussen twee scripts

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wat is de beste manier om twee scripts met elkaar te laten communiceren? Ik heb nu één php-script dat in een 'busy wait' (nieuw woordje geleerd) draait, en af en toe informatie ontvangt van/zendt naar een socket.

Nu wil ik het eigenlijk zo maken dat een tweede php-script een commando kan sturen naar het eerste script (dat dus aan één stuk door draait). Ik kom er maar niet uit hoe ik dit moet doen. Is dit überhaupt mogelijk?

Ik dacht er wel aan om dit via een MySQL-tabel te doen (script 2 zet er een commando in, script 1 haalt het periodiek op), maar dan krijg je zoveel loze queries. Script 1 gaat dan immers elke x seconden checken, en vaak is er helemaal niets aan de hand.

Is er een andere manier?

  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

kun je ook ff een voorbeeldje geven wat het moet gaan doen?

Steun Elkaar, Kopieer Nederlands Waar!


Verwijderd

Topicstarter
Op zondag 12 mei 2002 19:05 schreef Skinkie het volgende:
kun je ook ff een voorbeeldje geven wat het moet gaan doen?
Script 1 heeft de socket openstaan...
Script 2 (draait in een ander frame) wil een commando over die socket versturen...

Dat moet er gebeuren. En ik vrees dat dat commando alleen maar vanuit script 1 verzonden kan worden. Dus moet script 2 dat commando op een slimme manier doorgeven aan script 1. Begrijpt u? Het is nogal een advanced vraagstuk volgens mij...

Verwijderd

kan wel met javascript, niet met php (zo ver mijn kennis rijkt iig, en zo bijster ver is dat niet :)). zie ook http://www.htmlgoodies.com/beyond/Test3.html.

overigens is een php script dat non-stop draait ook niet echt ideaal, maar da's weer een andere discussie

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 08-09 09:40

Apache

amateur software devver

als je nu nog zou zeggen wat er doorgegeven moet worden en of het echt met sockets moet?

misschien als het simpele gegevens zijn kan je wat met sessions en javascript.

If it ain't broken it doesn't have enough features


Verwijderd

Topicstarter
Op zondag 12 mei 2002 19:10 schreef jurriebur het volgende:
kan wel met javascript, niet met php (zo ver mijn kennis rijkt iig, en zo bijster ver is dat niet :)).
Ik vrees het ook. Maar... dan moet ik een manier vinden om dit effect zo goed mogelijk te benaderen. Enorme kennis heb ik ook niet, maar toch ook alweer een jaartje of twee ervaring met PHP.
overigens is een php script dat non-stop draait ook niet echt ideaal, maar da's weer een andere discussie
Weet ik, maar die vervelende socket moet open blijven... ik heb er wel een sleepje ingegooid.

Verwijderd

Topicstarter
Op zondag 12 mei 2002 19:12 schreef Apache het volgende:
als je nu nog zou zeggen wat er doorgegeven moet worden en of het echt met sockets moet?
Een éénregelig commando, en het moet echt met sockets.
misschien als het simpele gegevens zijn kan je wat met sessions en javascript.
Was het maar waar.

Ik heb ook al geprobeerd om vanuit het tweede script gewoon een tweede verbinding te openen naar de server, en daarover de gegevens te versturen, maar daar trapte die niet in...

  • Mafioso
  • Registratie: November 2000
  • Laatst online: 08-09 17:59
Correct me if I'm wrong, maaruh PHP lijkt me niet echt geschikt voor dit soortdoeleinden. PHP is er nu niet echt bepaald voor gemaakt om non-stop te draaien.

Ik weet niet wat de preciese bedoeling is van je script, maar meschien kan het makkelijker met een hele andere aanpak :?

Kun je niet iets meer info geven over wat je nu eigenlijk wil berijken met die 2 scripts ?

Verwijderd

volgens mij kun je met javascript (de input daarvan kan wel weer met php) info doorgeven naar dat andere script via dat remote-ding wat ik postte. dan kan je dat weer uitlezen. Ik heb hier geen code liggen, maar je kunt wel wat knutselen neem ik aan ;)

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
ga dit ajb niet met php doen, maar met perl ofzo...
betere socket-functies en 't is tevens gemaakt om command-line te runnen

Verwijderd

Topicstarter
Op zondag 12 mei 2002 19:27 schreef jurriebur het volgende:
volgens mij kun je met javascript (de input daarvan kan wel weer met php) info doorgeven naar dat andere script via dat remote-ding wat ik postte. dan kan je dat weer uitlezen. Ik heb hier geen code liggen, maar je kunt wel wat knutselen neem ik aan ;)
Nee, ik heb even gekeken, maar het gaat op deze manier niet lukken.

Verwijderd

Topicstarter
Op zondag 12 mei 2002 19:33 schreef Limhes het volgende:
ga dit ajb niet met php doen, maar met perl ofzo...
betere socket-functies en 't is tevens gemaakt om command-line te runnen
Het doet er niet toe, de socket-functies zijn het probleem niet - die zijn goed genoeg. En het hoeft niet command-line te runnen. Dat maakt allemaal niets uit.
Over de load hoef je je geen zorgen te maken, die is alleszins acceptabel.

  • Erik Jan
  • Registratie: Juni 1999
  • Niet online

Erik Jan

Langzaam en zeker

Over de bruikbaarheid van PHP voor dit doeleind ga ik nix zeggen, is al vaak genoeg gedaan :)

Wat je volgens mij het beste kan doen is een tellertje met je loop mee laten lopen. Bij een bepaalde grens, laten we zeggen elke 500 loops, tjek je dan de inhoud van een bestandje of er nog iets gebeuren moet en reset je het tellertje. Met je andere scriptje schrijf je dan opdrachten naar dat bestandje weg als er iets gebeuren moet.

Pseudo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
i = 0
current_block_size = _NORMAL_BLOCK_SIZE_
while() {
  do_something_with(current_block_size)

  if (i == 500) {
    data = open_file()
    if (strlen(data) > 0) {
    current_block_size = data
    clean_file()
    }
    i = 0
  }
  sleep(2)
  i++
}

In dit stukje wordt dus door een extern iets de zogenaamde "current_block_size" veranderd. Ik hoop dat het zo duidelijk is.

This can no longer be ignored.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Wat is de reden dat script1 en 2 zo strict gescheiden zijn :?

Is er sprake van een client-server app?
Is er iets dat op hostA draait en op hostB uitgevoerd moet worden? (waarom werk je dan niet met remote procedure werking, of remote command executie (bijv via ssh))
Of heb je gewoon geen mooie integratie gevonden?

Verwijderd

Wat is eigenlijk het doel van de twee scriptjes?

Ten tweede wil ik ten overvloede zeggen dat perl voor sockets echt vele malen geschikter is.

Ten derde denk ik dat het idee met de query's (zie openingspost) helemaal niet zo gek is, de socket versie zal echt niet minder zwaar zijn!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:39
Op zondag 12 mei 2002 23:15 schreef NextGeneration het volgende:
Ten tweede wil ik ten overvloede zeggen dat perl voor sockets echt vele malen geschikter is.
Mwah. Zowel Perl als PHP hebben 'n min of meer één-op-één mapping met de sockets zoals die in libc zitten. Het enige nadeel van PHP is dat je daarmee niet zo makkelijk parallel kan executeren. Daar is echter wel omheen te werken.
Ten derde denk ik dat het idee met de query's (zie openingspost) helemaal niet zo gek is, de socket versie zal echt niet minder zwaar zijn!
Ik denk dat de socket-versie toch echt vele malen lichter (om maar niet te spreken over eleganter) is.

Als concrete oplossing zou ik aanraden om een bestaande techniek voor gedistribueerde executie te gebruiken, zoals SOAP, CORBA of XML-RPC. Alledrie worden (een beetje) door PHP ondersteund. Voor de details verwijs ik je uiteraard door naar Google.

  • igmar
  • Registratie: April 2000
  • Laatst online: 23-08 16:57

igmar

ISO20022

Wat is de beste manier om twee scripts met elkaar te laten communiceren?
http://www.vl-srm.net

  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
ik zou het iig een poging wagen met de (idd relatief nieuwe) socket functies van php.

stond laatst een tutorial op devshed.com hierover.

in linkse menuutje op PHP klikken en dan zie je het wel ergens staan.

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


Verwijderd

Op zondag 12 mei 2002 23:22 schreef Soultaker het volgende:

[..]

Mwah. Zowel Perl als PHP hebben 'n min of meer één-op-één mapping met de sockets zoals die in libc zitten. Het enige nadeel van PHP is dat je daarmee niet zo makkelijk parallel kan executeren. Daar is echter wel omheen te werken.
Ik zal Erik Jans' wijze raad maar opvolgen en hier niet over in discussie gaan :P.
(Btw, je zegt zelf al dat perl geschikter is)
Ik denk dat de socket-versie toch echt vele malen lichter (om maar niet te spreken over eleganter) is.

Als concrete oplossing zou ik aanraden om een bestaande techniek voor gedistribueerde executie te gebruiken, zoals SOAP, CORBA of XML-RPC. Alledrie worden (een beetje) door PHP ondersteund. Voor de details verwijs ik je uiteraard door naar Google.
Uiteraard is de socket versie eleganter, maar of het ook makkelijker is, of beter werkt ligt er aan (waarvoor het gebruikt moet worden).
Maar kan je toch iets meer vertellen over die drie technieken? (/me is nieuwsgierig).

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 12 mei 2002 23:36 schreef NextGeneration het volgende:
Maar kan je toch iets meer vertellen over die drie technieken? (/me is nieuwsgierig).
Ik denk dat dat nogal buiten de scope van deze draad licht. En vermoed dat de gemiddelde programmeer-basis-site (niet voor basis gebruik, maar voor proggen bedoelt) wel een artikeltje over een of meer van die drie heeft :)

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:39
Op zondag 12 mei 2002 23:36 schreef NextGeneration het volgende:
Maar kan je toch iets meer vertellen over die drie technieken? (/me is nieuwsgierig).
Nou, zoals ik zei, weet Google daar (veel) meer over. In feite zijn het verschillende technieken die in grote lijnen het zelfde doen: (min of meer) transparante gedistribueerde executie mogelijk maken.

In CORBA (waar ik het meeste van af weet) komt dat er op neer, dat je een object kan 'delen', waarna dat object een unieke identifier krijgt. Deze identifier kunnen andere applicaties dan gebruiken om een lokale verwijzing naar dat object te verkrijgen en operaties op dat object uit te voeren alsof het een lokaal object was.

Voor meer details raad ik je echt aan op internet te kijken:
CORBA -- http://www.corba.org/ (goed zoeken!)
SOAP -- http://www.w3c.org/2002/ws/
XML-RPC -- http://www.xmlrpc.com/

CORBA is vrij ingewikkeld en nogal slecht ondersteund in PHP. XML-RPC is waarschijnlijk het eenvoudigst als je handig bent met XML. SOAP is trouwens ook XML gebaseerd.

Verwijderd

Op zondag 12 mei 2002 23:49 schreef Soultaker het volgende:
Voor meer details raad ik je echt aan op internet te kijken:
CORBA -- http://www.corba.org/ (goed zoeken!)
SOAP -- http://www.w3c.org/2002/ws/
XML-RPC -- http://www.xmlrpc.com/
Jaja, lol, maar op dit moment ben ik nogal lui en :Z, dus vandaar :Y).
Pagina: 1