PHP: trådad körning?

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2005-11-07 12:55

Hej,

Går det att sätta igång en räknare som körs helt fristående och sedan med ett annat script fråga vad räknaren står på? Det jag ska göra exakt är att ha ett script som räknar fram primtal och man ska när som helst kunna fråga scriptet vilket primtal det för tillfället ligger på. Går detta att lösa med PHP?

  • Medlem
  • 2005-11-07 13:45

Låt räkna-skriptet spara undan "talet" i en databas eller textfil med vissa intervall, då kan ett annat skript komma åt det. Du kommer inte få det senaste talet, men iaf i närheten.

Sedan om PHP är en bra lösning för att räkna fram primtal är en annan fråga...

Vad du vill ha är typ en primtalsserver som din PHP-hemsida kan läsa från när en användare besöker en hemsida via Apache?

Det bästa är nog att skriva primtalsservern som ett fristående prog. Typ perl, java eller php-cli och starta den antingen med launchd (launchd ser till att din server kör hela tiden - oavsett om någon är inloggad eller inte och den omstartas om den krashar..) eller för hand från Terminal men då kanske det går ner när du loggar ut och den kommer inte starta igen om den krashar. (om du inte skriver ett eget launch-skript som kollar om server går ner..)

Tricket är väl sen när du har en primtalsserver som räknar primtal att låta den kommunicera med andra program (t.ex med ett lokalt PHP-skript via Apache).

Spara resultatet till en text-fil funkar men se till att tänka ut parallelismen där - dvs att servern inte krashar när den försöker öppna filen men det inte går för att Apache har öppnat den (för att läsa.) programmet som ska läsa primtalen måste vara på samma dator också.

Databas är nog bättre iom att databaser synkroniserar requests - så då kan flera accessa samma data "samtidigt". du kan enklare sprida systemet över ett nätverk - så du kan ha servern stående i en garderob i tusen år fri från din webserver.

Att låta servern öppna en egen port och direkt lyssna och ta emot IP-connections funkar också - men då måste du verkligen skriva en liten mini-server med ett eget protokoll o så - vilket iof kan va kul.

Annars skulle ju SOAP kunna funka, det är till för att skicka data över nät mellan program (även lokalt) - php stöder det vad jag vet. Stöds nog av Java och perl också.

Om du verkligen vill l33t hacka skulle du ju kunna skriva en primtalsserver helt inom PHP/Apache - men det finns problem - 1) apache har en maxtid för skripts vilket gör att din server bara skulle kunna vara uppe i typ 60 sekunder. Du skulle ju kunnna ta bort den maxtiden urt httpd.conf men då riskerar du att hänga apache om en vanlig hemsida hamnar i en loop eller nåt. Maxtiden är bra att ha. Servern kan liksom inte starta av sig själv utan en användare måste gå in på nån sida för att det ska börja. Sen kan den säkert ligga där och kanske använda SOAP för att snacka med andra PHP skript.

men Apache är liksom inte till för att bygga serverprogram. Det är mer till för att leverera och bygga hemsidor.

Annars kan du ju skriva en primtalsgenerator i javascript och låta all uträkning och allt ske på besökarens dator - så slipper du ha en server som räknar primtal över huvud taget.

oojoj va mkt blah det blev.. erh..

hi-5!

  • Medlem
  • Höganäs
  • 2005-11-07 18:10

Nyfiken: Vad använder man en primtalsserver till

  • Medlem
  • 2005-11-07 18:19

Eller bygg en egen server helt i Java, som dels räknar primtal, dels levererar output mot webben. Inte så svårt som man kan tro, det mesta finns redan i java.net.* Låter mindre knepigt än att försöka få olika saker att kommunicera med varandra.

Nu blir jag nyfiken - varför vill du göra detta?

Lösningen är enkel hur som helst - skriv ett PHP-script som:

1) läser sista primtal (från textfil eller databas)
2) räknar ut nästa primtal
3) returnerar detta samt sparar det i 1)

Detta skript läser du sedan in med file_get_contents("http://...");

1
Bevaka tråden