PHP también puede ser multiproceso, por lo que surge el problema, y ese es el problema de la sincronización. Changping Computer Training sabe que PHP en sí no admite subprocesos múltiples, por lo que no habrá un método de sincronización como Java. Entonces, ¿qué debemos hacer?
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. O cree un archivo temporal y espere a que desaparezca en otro hilo mientras (file_exits('xxx ')); esto significa que cuando el archivo temporal existe, significa que el hilo realmente se está ejecutando. Si falta el archivo, significa que otro hilo lo ha publicado.
2. Intente no leer los datos del socket obtenidos por runThread después de ejecutar fputs. Porque para lograr subprocesos múltiples, debe utilizar el modo sin bloqueo. Es decir, cuando se utiliza una función como fgets, regresa inmediatamente. . Entonces leer y escribir datos causará problemas. Si se utiliza el modo de bloqueo, el programa no es multiproceso. Antes de ejecutar el siguiente proceso, deberá esperar el regreso desde arriba. Entonces, si es necesario intercambiar datos, en última instancia se puede hacer utilizando archivos o datos externos. Si realmente lo desea, utilice socket_set_nonblock($fp) para lograrlo.
Dicho todo esto, ¿tiene algún significado práctico? ¿Cuándo es necesario este enfoque?
La respuesta es sí. Como todo el mundo sabe. En una aplicación que lee constantemente recursos de red, la velocidad de la red es el cuello de botella. Si se usa de esta forma, varios subprocesos pueden leer diferentes páginas simultáneamente.