Pool di thread PHP?

Ho pianificato un process CRON da eseguire each 4 ore che deve raccogliere informazioni sugli account utente. Ora voglio accelerare le cose e dividere il lavoro tra diversi processi e utilizzare un process per aggiornare il DB MySQL con i dati recuperati da altri processi.

In JAVA so che c'è un pool di thread che posso dedicare alcuni thread per realizzare un po 'di lavoro.

come lo faccio in PHP?

Qualsiasi consiglio è benvenuto.

grazie

Come altri hanno già detto, i processi di forking sono più semplici rispetto ai thread di generazione con PHP. Ma perché pensi che avere una singola discussione dedicata per scrivere i risultati nel database sia una buona idea? Sebbene questo sia leggermente più semplice da fare con i thread piuttosto che con i processi, è comunque un overhead complesso che non sembra aggiungere alcun valore all'objective generale.

In effetti, è molto più semplice avviare diverse istanze dello script (con qualche parametro per partizionare i dati) da cron piuttosto che avviare un fork dal codice PHP – e non preoccuparsi di alcun collo di bottiglia per registrare i dati nel database .

C.

PHP non è probabilmente la lingua più adatta per il multi-threading.

Potresti voler dare un'occhiata a diverse soluzioni. Ad esempio, Thrift ti permette di avere un front-end PHP che parla con un back-end Java, where puoi facilmente implementare il tuo comportmento desiderato.

Se vuoi ancora farlo in PHP, potresti voler dare un'occhiata a:

http://www.php.net/pcntl

http://www.electrictoolbox.com/article/php/process-forking/

PHP e Thread (queste 2 parole) non possono andare insieme nella stessa frase. PHP non offre supporto per i thread. Puoi provare i meccanismi di forging pcntl o l'elaborazione asynchronous che nel tuo caso non è utile.

Puoi usare un meccanismo di distribuzione del carico di lavoro che potrebbe essere quello che vuoi dando un'occhiata a Gearman (suggerisci di google).

Come descritto da altri "è una macchina forking distribuita" che può offrire la distribuzione del carico di lavoro che si sta cercando per "accelerare le cose".

Saluti,

Segui questi post – * http://www.alternateinterior.com/2007/05/multi-threading-strategies-in-php.html * http://www.electrictoolbox.com/article/php/process-forking/

Fondamentalmente è necessario condividere i dati tra i processi e, come vedo, probabilmente dovrai prima scrivere su alcuni file. Recupera utilizzando il process principale (rendilo un process di tipo ajax-polling) e scrivi su DB.

Puoi inoltrare nuovi processi anche in PHP: pcntl_fork ()

BTW. è quello script che dura più di 4 ore? In caso contrario, non vedo alcun motivo per complicarlo con la gestione dei thread o dei processi.

Puoi anche consultare questo articolo che mostra come simulare il threading, incluso un gestore del pool di thread che utilizza le chiamate HTTP asincrone e un server web:

http://w-shadow.com/blog/2008/05/24/improved-thread-simulation-class-for-php/

Bel process di pool di Arbow su github Con modifiche menzionate qui