Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [domanda] multithreads in php.

    come si puo fare un scripo multithreads in PHP ?

  2. #2
    Ciao,
    per ora no.
    PHP lavora sui processi, poi dipende da cosa ti serve fare
    per favore NIENTE PVT TECNICI da sconosciuti

  3. #3
    sto facciendo un web crawler, ma e' molto lento, vorrie aprire un tot di siti insieme, non fare uno per uno

  4. #4
    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

  5. #5
    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

  6. #6
    Originariamente inviato da moty66
    ma ancora molto lento !!!!!!!!!!
    ho da crawlare 400000 siti !!
    Non usare PHP
    per favore NIENTE PVT TECNICI da sconosciuti

  7. #7
    bella resposta :P
    non posso usare C perche non sono bravo
    e non mi dire java perche e' troppo complicata :P
    allora uso PHP

  8. #8
    ma questo codice e giusto ?
    perche mi da preblemi, ogni tanto si alenta il mio computer
    e vedo 100% il processore


  9. #9
    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

  10. #10
    grazie per la resoposta
    hai qualche sito per farmi leggere qualcosa sul forks ??

    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.