zts threads thread son safety que maneja los how hilos example enable php multithreading pthreads die

threads - que son los hilos en php



Php: cuando usar pthread (1)

No sé mucho sobre el uso de subprocesos pero busqué en pthreads para php y parece muy interesante y fácil, o más fácil de lo que pensé ...

Busqué ejemplos y busqué en la documentación, pero no pude encontrar ningún ejemplo real de cuándo es realmente beneficioso utilizar subprocesos, seguro que es para tareas largas que no dependen unas de otras, como hacer muchas solicitudes http o tal vez enviando correos.

Pero ¿qué pasa con escribir entradas de registro? ¿Inserciones en bases de datos? (como el seguimiento de la actividad del usuario) Obtención de la base de datos (¿puedo devolver datos de un hilo?)

¿Aumentará esto el rendimiento o la sobrecarga de crear subprocesos es demasiado? (aunque podría usar un grupo de trabajadores también para obtener menos gastos generales, creo ...)

Cualquier consejo o ejemplo son muy apreciados!


Hay muchos ejemplos incluidos en la distribución y disponibles en github:

https://github.com/krakjoe/pthreads/tree/master/examples

Estos ejemplos incluyen cosas tales como un grupo de subprocesos de propósito general, un servidor de socket multihilo y un SQLWorker.

Los subprocesos que pthreads crea son tan sanos y seguros, como los subprocesos que Zend configura para las solicitudes de servicio a través de un SAPI de subprocesos múltiples. Son compatibles con todas las mismas funciones, además de todo lo que espera de una API de subprocesos de alto nivel (casi).

Siempre habrá limitaciones para la implementación de subprocesos en las entrañas de una arquitectura de nada compartido, pero los beneficios, en términos de usar mejor los recursos físicos a su disposición, pero también la facilidad de uso general de PHP para cualquier tarea dada superan con creces los gastos generales de trabajando alrededor de ese ambiente

Los objetos incluidos en pthreads funcionan como lo hace cualquier otro objeto PHP, puede leer, escribir y ejecutar sus métodos, desde cualquier contexto con una referencia al objeto.

Está pensando exactamente en el sentido correcto: una medida de eficiencia no está en la cantidad de subprocesos que ejecuta su aplicación, sino en cómo se utilizan esos subprocesos para servir mejor al propósito principal de la aplicación. Los trabajadores son una buena idea, donde sea que puedas usarlos, hazlo.

Con respecto a las cosas específicas que pidió, un LoggingWorker es una buena idea y funcionará, no intente compartir esa secuencia ya que no tiene sentido, será perfectamente estable si el trabajador abre el archivo de registro o la conexión de la base de datos Apilables ejecutados por él pueden acceder a ellos. Se incluye un SQLWorker en los ejemplos, nuevamente, otra buena idea donde la API carece de una API asíncrona decente, o simplemente prefiere el flujo de programación de subprocesos múltiples.

No obtendrás una respuesta mejor o más correcta: escribí pthreads, por mi cuenta.