2012-12-12 8 views
36

Quello che sto cercando di fare è caricare alcuni dati da un database o da memcache in modo asincrono.Chiamata di thread PHP a una funzione PHP in modo asincrono

Lo so, lo so. "PHP non supporta il threading".

Ma che dire di register_tick_function? Non è proprio quello il threading?

Qualcuno ha eseguito alcun tipo di preload predittivo o davvero qualsiasi elaborazione in background che utilizza register_tick_function?

+2

No, tutto _halts_ su una funzione tick. 'gearman' è un buon modo per scaricare un po 'di lavoro in un altro processo. Oppure si può fare un po 'di biforcazione non si sta usando php in un server web ma dalla riga di comando. – Wrikken

+2

php supporta il threading, ma non penso che sia necessario per il tuo problema specifico – Ibu

+0

@Wrikken, ho capito che tutto il resto si ferma sulla spunta. Ma pensate al threading su un singolo processore, una macchina a thread singolo. Ecco come implementano il threading. – Beachhouse

risposta

54

http://php.net/pthreads

http://docs.php.net/Thread

PHP certamente in grado di supportare threading. Il caricamento di dati da un database SQL/NoSQL in parallelo è sicuramente una possibilità. Vedi il manuale PHP, esempi trovati nei pacchetti github e pecl e un po 'più informazioni su http://pthreads.org

Si prega di notare, la documentazione ha dichiarato che questo è parte del nucleo, questo è (mio) errore umano. È necessario installare pthreads con una versione thread-safe di php, può essere installato da pecl (windows incuded, dlls @http://windows.php.net/downloads/pecl/releases/pthreads). Scuse.

+1

Non sono sicuro se questo link di download porta alle ultime versioni – Baba

+1

Link aggiornati, grazie per l'heads up: D –

+0

So che questo è vecchio ma penso che valga la pena notare che pthreads in questo momento (3.1.6) supportano solo php 7.2 + quindi avrai bisogno di creare php con zts abilitato da una versione di php maggiore o uguale a 7.2 –

Problemi correlati