¿(Pseudo)multiproceso y multiprocesamiento en PHP?
Utilice el subproceso múltiple del servidor WEB para el procesamiento y llame al programa que necesitamos para implementar el subproceso múltiple desde el servidor WEB varias veces. ?
Ahora que el multithreading está disponible en PHP, surge un problema, es decir, la sincronización. Huoying Computer Training sabe que PHP en sí no admite subprocesos múltiples, por lo que no existe un método como sincronizar en Java. Entonces, ¿qué hacemos?
1. Intenta no acceder al mismo recurso. para evitar conflictos. Pero puede funcionar como una base de datos al mismo tiempo. Porque la base de datos admite operaciones concurrentes. Por lo tanto, no escriba datos en el mismo archivo en PHP multiproceso. Si debe escribir, utilice otros métodos para sincronizar. Por ejemplo, llame a Flock para bloquear el archivo, etc. O cree un archivo temporal y espere a que desaparezca en otro hilo while(file_exits('xxx')); Esto significa que cuando el archivo temporal existe, significa que el hilo realmente está funcionando. Si no existe dicho archivo, significa que otros hilos han publicado este archivo.
2. Intente no leer datos del socket que toma runThread después de ejecutar fputs. Porque para lograr subprocesos múltiples, es necesario utilizar el modo sin bloqueo. Es decir, cuando funciones como fgets regresan inmediatamente. . Entonces leer y escribir datos causará problemas. Si se utiliza el modo de bloqueo, el programa no es multiproceso. Tiene que esperar el regreso desde arriba antes de ejecutar el siguiente programa. Entonces, si necesita intercambiar datos, finalmente puede usar archivos o datos externos para completarlo. Si realmente lo desea, utilice socket_set_nonblock($fp) para lograrlo.
Dicho todo esto, ¿tiene esto algún significado práctico? ¿Cuándo es necesario utilizar este método?
La respuesta es sí. Todo el mundo lo sabe. En una aplicación que lee constantemente recursos de red, la velocidad de la red es el cuello de botella. Si adopta esta forma, podrá leer diferentes páginas con varios hilos al mismo tiempo.