usu 10 Report post Posted March 1, 2011 Premetto subito che le mie conoscenze a livello di programmazione non vanno oltre i fondamentali della OOP (metodi, classi, incapsulamento, ereditarietà, polimorfismo, ecc) e non sono neanche sicuro che il titolo sia giusto :emoticons_dent2020: Detto questo, è qualche tempo che ho un tarlo in testa che non riesco a levarmi: che logica utilizzano servizi tipo twitterfeed, notify.me, pingdom, boxcar e tantissimi loro simili? Sono tutti servizi che eseguono un numero grandissimo di polling di un qualche tipo ad intervalli di tempo prestabiliti. L'unica cosa sensata che mi viene in mente è che per lo scopo ci sia un demone homemade che fa costantemente qualcosa in background, ma cos'è questo qualcosa? :D Un altro modo di porre la domanda è: tu come svilupperesti un servizio come twitterfeed? Spero di essere riuscito a farmi capire :) Share this post Link to post Share on other sites
guest 16 Report post Posted March 1, 2011 IMHO, hanno un poller che ogni X tempo prende Y valori da db e li esegue, in parallelo. A farlo in PHP, usando i thread, non sarebbe nemmeno troppo complesso. Il parent prende i dati dal database, magari 10, forka 10 child che eseguono l'operazione e ne aspetta la risposta. Man mano che il child termina, vien pescato un nuovo record da db. Il più sarebbe la gestione dei semafori, o si fan su disco o magari appena il child entra in esecuzione fa l'update del record su db, impostando una colonna "running" a "1". Share this post Link to post Share on other sites
usu 10 Report post Posted March 1, 2011 Ah sì, questa potrebbe essere una soluzione :) Intanto grazie! Vediamo se salta fuori qualche altra idea :zizi: Share this post Link to post Share on other sites
Antonio 18 Report post Posted March 1, 2011 thread php, mysql? naaaaa Passate al lato oscuro della forza :98:: storage nosql, map reduce et similia con grabber & Co scritti in C/C++ Share this post Link to post Share on other sites
guest 16 Report post Posted March 2, 2011 Vade retro satana. Share this post Link to post Share on other sites
Ste 19 Report post Posted March 2, 2011 Con MapReduce però devi attendere l'elaborazione del tutto, non so quanto sia realmente utilizzato per questo tipo di cose, no? Share this post Link to post Share on other sites
usu 10 Report post Posted March 2, 2011 Con MapReduce però devi attendere l'elaborazione del tutto, non so quanto sia realmente utilizzato per questo tipo di cose, no? Pensavo la stessa cosa, lo vedrei benissimo per un'eventuale generazione generazione di statistiche ad uso interno e non, ma per un servizio del genere non mi era proprio venuto in mente, c'è qualcosa che mi sfugge? Poi addirittura C*? Almeno scala, dai :zizi: Share this post Link to post Share on other sites
Antonio 18 Report post Posted March 2, 2011 Con MapReduce però devi attendere l'elaborazione del tutto, non so quanto sia realmente utilizzato per questo tipo di cose, no? Non so quanto sia live il "feed" che eseguono siti del genere, perché non li ho mai usati, comunque: Si potrebbe suddividere l'insieme dei siti degli utenti iscritti per frequenza di aggiornamento dei propri RSS, schedulando tipo 5 job a priorità diversa e facendo eseguire con frequenza superiore quelli per i siti più attivi (che statisticamente saranno in numero molto inferiore rispetto alla totalità dei siti da servire e si ritroveranno con feed quasi istantanei). Poi in background eseguire un ulteriore task ogni giorno o tot giorni che calcola la classe di appartenenza di un sito, per spostare lo stesso da un sottoinsieme all'altro. Share this post Link to post Share on other sites
Ste 19 Report post Posted March 2, 2011 Si sarebbe una buona idea, anche perchè considero che non siano job particolarmente impegnativi, per cui si possono eseguire anche quasi online con un cluster decente. C'è qualcuno che usa mapreduce in questo modo tra questi famosi citati? Share this post Link to post Share on other sites
Antonio 18 Report post Posted March 2, 2011 Pensavo la stessa cosa, lo vedrei benissimo per un'eventuale generazione generazione di statistiche ad uso interno e non, ma per un servizio del genere non mi era proprio venuto in mente, c'è qualcosa che mi sfugge?Poi addirittura C*? Almeno scala, dai :zizi: Le operazioni da eseguire sono così semplici che si potrebbe azzardare anche una scrittura in C++ :) Alla fine si tratta di prendere il file xml degli rss, controllare con un sha1 se è cambiato qualcosa rispetto all'ultimo hash salvato, in caso affermativo elaborare il file xml per estrapolare i dati (ad esempio con la libreria xerces). Una volta tornato l'output dal reduce andiamo a bombardare i vari siti con le nuove news da aggiungere (e qui si può usare ancora C o altri linguaggi). :) Share this post Link to post Share on other sites