Lea algunos textos sobre el bloqueo en PHP.
Todos ellos, principalmente, directo a http://php.net/manual/en/function.flock.php.Exclusión mutua PHP (mutex)
¡Esta página habla de abrir un archivo en el disco duro!
¿Es realmente así? Quiero decir, esto hace que el bloqueo sea realmente caro, significa que cada vez que quiero bloquear tendré que acceder al disco duro) =
¿Ya puede consolarme con una noticia deliciosa?
Editar:
Debido a algunas respuestas que tengo aquí, quiero pedir a este;
Mi secuencia de comandos se ejecutará solo por un hilo, o varios? Porque si es uno, obviamente no necesito un mutex. ¿Hay una respuesta concisa?
¿Qué es exactamente lo que estoy tratando de hacer
Pregunta de ircmaxell.
Esta es la historia:
Tengo dos servidores ftp. Quiero poder mostrar en mi sitio web cuántos usuarios en línea están en línea.
Entonces, pensé que estos servidores de ftp "PUBLICARÍAN" sus estadísticas en una determinada página de script PHP. Supongamos que la URL de esta página es "http://mydomain.com/update.php".
En la página principal del sitio web ("http://mydomain.com/index.php") mostraré las estadísticas acumulativas (usuarios en línea).
Eso es todo.
Mi problema es que no estoy seguro si, cuando un servidor ftp actualiza sus estadísticas mientras que otro lo hace también, la información se mezclará.
Al igual que cuando multi-threading; Dos subprocesos aumentan algunas variables "int" al mismo tiempo. No sucederá como se espera a menos que sincronices entre ellos.
Entonces, ¿tendré un problema? ¿Si no talvez?
Posible solución
Pensando mucho en ello durante todo el día, tengo una idea aquí y quiero que dejar su opinión.
Como dije, estos servidores ftp publicarán sus estadísticas, una vez cada 60 segundos.
Estoy pensando en tener este archivo "stats.php".
Se incluirá en la secuencia de comandos de actualización a la que van los servidores ftp ("update.php") y en la página "index.php" donde los visitantes verán cuántos usuarios están en línea.
Ahora, cuando un servidor ftp se actualiza, el script en "update.php" modificará "stats.php" con las nuevas estadísticas acumulativas.
Primero leerá las estadísticas incluidas en "stats.php", luego las acumulará y luego reescribirá ese archivo.
Si no me equivoco, PHP detectará que el archivo ("stats.php") se cambiará y cargará el nuevo. ¿Correcto?
¿PHP incluso admite el enhebrado? Mirando a través de la API PHP no veo nada que parezca estar relacionado con el hilo ... – tloach
Por alguna razón, pensé que PHP soporta el enhebrado, de la misma manera que ejecutará el mismo script para varios clientes simultáneamente. – Poni
Así que tengo una variable estática que contendrá algunos datos, que se actualizan por varias fuentes y se alimentan a varios clientes. Esto puede suceder al mismo tiempo, por lo tanto, necesito una manera de sincronizar. – Poni