Gå til innhold

Lage multithreaded phpscripts


Anbefalte innlegg

Holder på å scripte et program som går inn på diverse torrent sider og søker for så å laste ned en torrent om den passer til søket. Problemet er at enkelte sider er enten utrolig treig respons eller ingen respons i det hele tatt. Så vidt jeg vet så kunne dette vært løst ved at hver enkel torrent side fikk sin egen tråd, har prøvd på noen google søk men finner lite om emnet.

 

Støtter php tråder?

 

Hvordan lager man så et script som bruker dette?

Lenke til kommentar
Videoannonse
Annonse
Vel, det er den eneste måten du kan få det til på. Hvis du skal kjøre kode sekvensielt så vil du ende opp med at det går treigt. Prosesser er slik jeg ser det det eneste du kan gjøre for å få ting til å kjøres "parallelt".

6987056[/snapback]

Aha, er ikke det største problemet. Litt plagsomt men jeg overlever. Jeg får ta en titt på det senere, sikkert veldig nyttig i andre sammenhenger!

 

pcntl muligheten i PHP fungerer forøvrig bare på Linux-systemer ;)

6987066[/snapback]

Finnes det virkelig noen som kjører PHP på Windows? :tease:

Eller tenker du på *BSD også?

 

Du kan jo se på Python?

6987098[/snapback]

Joda, kanskje, jeg har vært innom tanken på Python, men siden jeg inkluderer php filer som brukes både på nett og på den filen som kjører hvert 10ende minutt, så blir det for mye styr.

Endret av Canute
Lenke til kommentar

Du kan jo få skriptet ditt til å kalle et tilsvarende script eller seg selv via http.

Dvs. kjøre en vanlig spørring til apache eller tilsvarende.

Jeg postet en tråd om dette engang, men klarte ikke å finne den igjen.

Det er komplisert, men ikke umulig.

PHP i seg selv er ikke multi-threaded, men ettersom apache er det, så er dette mulig.

Lenke til kommentar

Kan f.eks. bruke Javascript til å spawne en PHP-fil per side som skal gjennomsøkes, vha. AJAX eller bare iframes.

 

sok.php?side=torrentspy

sok.php?side=isohunt

 

Og ha en frontend som starter opp sok.php én gang per side som skal gjennomsøkes. En utnytter da (som Nazgul påpeker) at Apache og OSet den ligger på er multithreadet. :)

Lenke til kommentar
men hva hjelper da det? JS kjøres vel sekvensielt? Isåfall er man jo tilbake med treige greier da :shrug:

6992086[/snapback]

 

Ikke det jeg mener. JS er i stand til å fyre opp flere PHP-script uten å vente på at PHP-scriptene blir ferdig før neste må starte. Eksempelvis kan JS skippes og en rekke med iframes kan presentere søkeresultatene.

 

Eksempel på hva jeg mener

(Ja, jeg ser at eksempelet kjøres sekvensielt, men det trenger ikke gjøres slik)

Endret av jorgis
Lenke til kommentar
php scriptet kjøres som cli (command line) så javascript er uaktuelt.

6994924[/snapback]

 

Hvorfor sa du ikke dette før, da?

 

PHP-CLI kan da startes i flere instanser:

bruker@host~: php sok.php?sok=isohunt &

 

Bare å sende prosessene til bakgrunnen, og ting funker fint? Evt. om du ikke har mulighet til slikt (ikke *nix, f.eks.), kan du jo bare få serveren til å spawne flere intanser av php-cli, på en måte du selv velger (et spawn-script som fyrer opp alle php-cli-instansene, f.eks.). :)

Lenke til kommentar

Jeg vet fortsatt ikke hva du vil/prøver å gjøre.

Du sier du vil kjøre multi-threaded, jeg har allerede nevnt hvordan det kan gjøres, men du sier ingen ting om du vil ha output fra de andre trådene, eller hva de skal gjøre.

Prøv å komme med litt skikkelig info, jeg er ihvertfall lei av å tusle rundt grøten.

Lenke til kommentar

Slik jeg har det nå er at jeg har en funksjon for hver torrent side, som tar et argument og det er søket. Hvis den finner en torrent som passer til søket så returnerer den urlen til torrenten. For å slippe at den laster ned først en fra en side og så en tilsvarende torrent fra en annen side har jeg gjort det slik at den maks kan hente fra en side - derfor trenger jeg output.

"Fant denne siden noe eller må jeg bruke en annen?"

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...