come si puo fare un scripo multithreads in PHP ?
come si puo fare un scripo multithreads in PHP ?
Ciao,
per ora no.
PHP lavora sui processi, poi dipende da cosa ti serve fare
per favore NIENTE PVT TECNICI da sconosciuti
sto facciendo un web crawler, ma e' molto lento, vorrie aprire un tot di siti insieme, non fare uno per uno![]()
Allora non ti serve il multithreading, puoi usare i socket non-blocking.
Tempo fa avevo postato un esempio funzionante ma non riesco più a trovare il thread, dovresti dare un'occhiata qui
http://it.php.net/manual/en/ref.sockets.php
Nel frattempo cerco di rifarlo
per favore NIENTE PVT TECNICI da sconosciuti
ho fatto cosi
codice:if (!$fp) { @stream_set_blocking($fp,TRUE); @stream_set_timeout ($fp,0,400); $keywords = 'Conncetion Error'; $description = 'Conncetion Error'; $title = 'Conncetion Error'; } else { @stream_set_blocking($fp,TRUE); @stream_set_timeout ($fp,0,400); $out = "GET / HTTP/1.1\r\n"; $out .= "Host: $url\r\n"; $out .= "Connection: Close\r\n\r\n"; @fwrite($fp, $out); while (!feof($fp)) { $file .= fgets($fp, 128); } fclose($fp); .. .. .. ..
ma ancora molto lento !!!!!!!!!!
ho da crawlare 400000 siti !!
grazie
Non usare PHPOriginariamente inviato da moty66
ma ancora molto lento !!!!!!!!!!
ho da crawlare 400000 siti !!![]()
per favore NIENTE PVT TECNICI da sconosciuti
bella resposta :P
non posso usare C perche non sono bravo![]()
e non mi dire java perche e' troppo complicata :P
allora uso PHP![]()
ma questo codice e giusto ?
perche mi da preblemi, ogni tanto si alenta il mio computer
e vedo 100% il processore
![]()
se mi dai un po di tempo ti faccio una struttura base
che usa i forks e le socket asincrone
in questo modo fai una cosa molto semplice
ad es apri 50 forks e poi ogni forks gestisce 20 sockets (ovvero 20 connessioni)
20 connessioni * 50 = 1000 a volta
lui tiene la quantità di forks aperte a 50 e queste comunicano tramite una socket unix passando le informazioni che devono passare in forma di array serializzato definendo il fork da cui vengono. Dall'array serializzato leggi quello che ti serve
in questo modo nn accoppi il picci xche 50 fork sono abb poche e vai abbastanza veloce
credo che in un 2/3 ore dovresti finire di fare il tutto
ovviamente se hai una macchina + potente con banda maggiore puoi anche incrementare il numero di sockets e forks contemporanei
xo x fare il tutto c'ho bisogno un po di tempo))
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
grazie per la resoposta
hai qualche sito per farmi leggere qualcosa sul forks ??
grazie