Hogar / Internet / Hilo de discusión anémico php. Computación multiproceso en PHP: pthreads. ¿Qué son los subprocesos?

Hilo de discusión anémico php. Computación multiproceso en PHP: pthreads. ¿Qué son los subprocesos?

Parece que los desarrolladores de PHP rara vez utilizan la concurrencia. No hablaré de la simplicidad del código síncrono; la programación de un solo subproceso es, por supuesto, más simple y clara, pero a veces pequeño uso El paralelismo puede aportar mejoras significativas en el rendimiento.

En este artículo, veremos cómo se puede lograr el subproceso múltiple en PHP usando la extensión pthreads. Para hacer esto, necesitará tener instalada la versión ZTS (Zend Thread Safety) de PHP 7.x, junto con extensión instalada pthreads v3. (En el momento de escribir este artículo, en PHP 7.1, los usuarios deberán realizar la instalación desde la rama master en el repositorio de pthreads; consulte la extensión de terceros).

Una pequeña aclaración: pthreads v2 está destinado a PHP 5.x y ya no es compatible, pthreads v3 es para PHP 7.x y se está desarrollando activamente.

Después de semejante digresión, ¡vamos directo al grano!

Procesamiento de tareas únicas

A veces desea procesar tareas únicas en forma de subprocesos múltiples (por ejemplo, ejecutar alguna tarea vinculada a E/S). En tales casos, puede utilizar la clase Thread para crear un nuevo hilo y ejecutar algún procesamiento en un hilo separado.

Por ejemplo:

$tarea = nueva clase extiende Thread ( $respuesta privada; ejecución de función pública() ( $content = file_get_contents("http://google.com"); preg_match("~ (.+)~", $contenido, $coincidencias); $this->respuesta = $coincidencias; ) ); $tarea->iniciar() && $tarea->join(); var_dump($tarea->respuesta); // cadena (6) "Google"

Aquí el método de ejecución es nuestro procesamiento, que se ejecutará dentro de un nuevo hilo. Cuando se llama a Thread::start, se genera un nuevo hilo y se llama al método de ejecución. Luego unimos el hilo secundario al hilo principal llamando a Thread::join, que se bloqueará hasta que el hilo secundario haya terminado de ejecutarse. Esto asegura que la tarea termine de ejecutarse antes de que intentemos imprimir el resultado (que se almacena en $tarea->respuesta).

Puede que no sea deseable contaminar una clase con responsabilidades adicionales asociadas con la lógica de flujo (incluida la responsabilidad de definir un método de ejecución). Podemos distinguir dichas clases heredándolas de la clase Threaded. Luego se pueden ejecutar dentro de otro hilo:

La tarea de clase extiende Threaded ( public $respuesta; función pública someWork() ($content = file_get_contents("http://google.com"); preg_match("~ (.+) ~", $content, $matches); $ esto->respuesta = $coincidencias; ) ) $tarea = nueva tarea; $thread = nueva clase($tarea) extiende Thread ( $tarea privada; función pública __construct($tarea roscada) ( $this->tarea = $tarea; ) función pública ejecutar() ( $this->tarea->someWork( ); $hilo->iniciar() && $hilo->unir(); var_dump($tarea->respuesta);

Cualquier clase que deba ejecutarse en un hilo separado debe heredar de la clase Threaded. Esto se debe a que proporciona las capacidades necesarias para realizar procesamiento en diferentes subprocesos, así como seguridad implícita e interfaces útiles (como la sincronización de recursos).

Echemos un vistazo a la jerarquía de clases que ofrece la extensión pthreads:

Threaded (implementa Traversable, Collectable) Grupo volátil de trabajadores de subprocesos

Ya cubrimos y aprendimos los conceptos básicos de las clases Thread y Threaded, ahora echemos un vistazo a las otras tres (Worker, Volatile y Pool).

Reutilizar hilos

Iniciar un nuevo hilo para cada tarea que debe paralelizarse es bastante costoso. Esto se debe a que se debe implementar una arquitectura sin nada común en pthreads para lograr subprocesos múltiples dentro de PHP. Lo que significa que todo el contexto de ejecución de la instancia actual del intérprete PHP (incluyendo cada clase, interfaz, rasgo y función) debe copiarse para cada hilo creado. Debido a que esto tiene un impacto notable en el rendimiento, la transmisión siempre debe reutilizarse siempre que sea posible. Los subprocesos se pueden reutilizar de dos maneras: usando trabajadores o usando grupos.

La clase Worker se utiliza para realizar una serie de tareas de forma sincrónica dentro de otro hilo. Esto se hace creando una nueva instancia de Worker (que crea un nuevo hilo) y luego empujando las tareas a la pila de ese hilo separado (usando Worker::stack).

He aquí un pequeño ejemplo:

La tarea de clase extiende Threaded ( valor $ privado; función pública __construct(int $i) ( $this->value = $i; ) función pública run() ( usleep(250000); echo "Tarea: ($this->value) \n"; ) ) $trabajador = nuevo Trabajador(); $trabajador->inicio(); for ($i = 0; $i pila(nueva tarea($i)); ) while ($trabajador->recoger()); $trabajador->apagado();

En el ejemplo anterior, 15 tareas para un nuevo objeto $worker se colocan en la pila mediante el método Worker::stack y luego se procesan en el orden en que fueron enviadas. El método Worker::collect, como se muestra arriba, se utiliza para limpiar tareas tan pronto como terminan de ejecutarse. Con él, dentro de un bucle while, bloqueamos el hilo principal hasta que todas las tareas en la pila se completen y borren, antes de llamar a Worker::shutdown. Terminar a un trabajador anticipadamente (es decir, mientras todavía quedan tareas por completar) seguirá bloqueando el hilo principal hasta que todas las tareas hayan completado su ejecución, solo que las tareas no serán recolectadas como basura (lo que implica pérdidas de memoria).

La clase Worker proporciona varios otros métodos relacionados con su pila de tareas, incluido Worker::unstack para eliminar la última tarea apilada y Worker::getStacked para obtener el número de tareas en la pila de ejecución. La pila de un trabajador contiene solo las tareas que deben ejecutarse. Una vez que se ha completado una tarea en la pila, se elimina y se coloca en una pila separada (interna) para la recolección de basura (usando el método Worker::collect).

Otra forma de reutilizar un hilo en múltiples tareas es usar un grupo de hilos (a través de la clase Pool). Un grupo de subprocesos utiliza un grupo de trabajadores para permitir la ejecución de tareas. simultáneamente, en el que el factor de concurrencia (el número de subprocesos del grupo con el que opera) se establece cuando se crea el grupo.

Adaptemos el ejemplo anterior para utilizar un grupo de trabajadores:

La tarea de clase extiende Threaded ( valor $ privado; función pública __construct(int $i) ( $this->value = $i; ) función pública run() ( usleep(250000); echo "Tarea: ($this->value) \n"; ) ) $piscina = nueva piscina(4); para ($i = 0; $i envío(nueva tarea($i)); ) mientras ($pool->collect()); $piscina->apagar();

Existen algunas diferencias notables al utilizar una piscina en comparación con un trabajador. En primer lugar, no es necesario iniciar el grupo manualmente; comienza a ejecutar tareas tan pronto como están disponibles. En segundo lugar, nosotros enviar tareas a la piscina, no ponerlos en una pila. Además, la clase Pool no hereda de Threaded y, por lo tanto, no se puede pasar a otros subprocesos (a diferencia de Worker).

Es una buena práctica que los trabajadores y los grupos limpien siempre sus tareas tan pronto como las hayan completado y luego las finalicen manualmente ellos mismos. Los subprocesos creados utilizando la clase Thread también deben adjuntarse al subproceso principal.

pthreads y (in)mutabilidad

La última clase que tocaremos es Volatile, una nueva incorporación a pthreads v3. La inmutabilidad se ha convertido en un concepto importante en pthreads porque sin ella, el rendimiento se ve afectado significativamente. Por lo tanto, de forma predeterminada, las propiedades de las clases Threaded que son en sí mismas objetos Threaded ahora son inmutables y, por lo tanto, no se pueden sobrescribir después de su asignación inicial. Actualmente se prefiere la mutabilidad explícita para tales propiedades, y aún se puede lograr usando la nueva clase Volatile.

Veamos un ejemplo que demostrará las nuevas restricciones de inmutabilidad:

Class Task extiende Threaded // una clase Threaded (función pública __construct() ($this->data = new Threaded(); // $this->data no se puede sobrescribir, ya que es una propiedad Threaded de una clase Threaded)) $task = new class(new Task()) extiende Thread ( // una clase Threaded, ya que Thread extiende la función pública Threaded __construct($tm) ( $this->threadedMember = $tm; var_dump($this->threadedMember-> data); // objeto(Threaded)#3 (0) () $this->threadedMember = new StdClass() // no válido, ya que la propiedad es un miembro Threaded de una clase Threaded ) );

Las propiedades roscadas de las clases volátiles, por otro lado, son mutables:

Class Task extiende Volatile (función pública __construct() ($this->data = new Threaded(); $this->data = new StdClass(); // válido, ya que estamos en una clase volátil) ) $task = new class(new Task()) extiende Thread ( función pública __construct($vm) ( $this->volatileMember = $vm; var_dump($this->volatileMember->data); // object(stdClass)#4 (0) () // aún no es válido, ya que Volatile extiende Threaded, por lo que la propiedad sigue siendo un miembro Threaded de una clase Threaded $this->volatileMember = new StdClass() );

Podemos ver que la clase Volatile anula la inmutabilidad impuesta por su clase Threaded principal para proporcionar la capacidad de cambiar las propiedades de Threaded (así como desarmarlas()).

Hay otro tema de discusión para cubrir el tema de la variabilidad y la clase volátil: las matrices. En pthreads, las matrices se convierten automáticamente en objetos volátiles cuando se asignan a una propiedad de la clase Threaded. Esto se debe a que simplemente no es seguro manipular una serie de múltiples contextos PHP.

Veamos un ejemplo nuevamente para entender mejor algunas cosas:

$matriz = ; $tarea = nueva clase($matriz) extiende Thread ( $datos privados; función pública __construct(matriz $matriz) ( $this->data = $matriz; ) función pública ejecutar() ( $this->data = 4; $ esto->datos = 5; print_r($esto->datos) ); $tarea->iniciar() && $tarea->unirse(); /* Salida: Objeto volátil ( => 1 => 2 => 3 => 4 => 5) */

Vemos que los objetos volátiles se pueden tratar como si fueran matrices porque admiten operaciones de matriz como (como se muestra arriba) el operador subconjunto(). Sin embargo, las clases volátiles no admiten funciones de matriz básicas como array_pop y array_shift. En cambio, la clase Threaded nos proporciona operaciones como métodos integrados.

A modo de demostración:

$datos = nueva clase extiende Volátil ( público $a = 1; público $b = 2; público $c = 3; ); var_dump($datos); var_dump($datos->pop()); var_dump($datos->shift()); var_dump($datos); /* Salida: objeto(clase@anonimo)#1 (3) ( ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) ) int(3) int(1) objeto(clase@anónimo)#1 (1) ( ["b"]=> int(2) ) */

Otras operaciones admitidas incluyen Threaded::chunk y Threaded::merge .

Sincronización

En la última sección de este artículo, veremos la sincronización en pthreads. La sincronización es un método que le permite controlar el acceso a recursos compartidos.

Por ejemplo, implementemos un contador simple:

$contador = nueva clase extiende Thread (público $i = 0; función pública ejecutar() (para ($i = 0; $i i; ) ) ); $contador->inicio(); para ($i = 0; $i i; ) $contador->unirse(); var_dump($contador->i); // imprimirá un número del 10 al 20

Sin el uso de sincronización, el resultado no es determinista. Varios subprocesos escriben en la misma variable sin acceso controlado, lo que significa que se perderán las actualizaciones.

Arreglemos esto para que obtengamos la salida correcta de 20 agregando tiempo:

$contador = nueva clase extiende Thread ( public $i = 0; función pública ejecutar() ( $this->synchronized(function () ( for ($i = 0; $i i; ) )); ) ); $contador->inicio(); $contador->sincronizado(función ($contador) (para ($i = 0; $i i; ) ), $contador); $contador->unirse(); var_dump($contador->i); //int(20)

Los bloques de código sincronizados también pueden comunicarse entre sí utilizando los métodos Threaded::wait y Threaded::notify (o Threaded::notifyAll).

Aquí hay un incremento alternativo en dos bucles while sincronizados:

$contador = nueva clase extiende Thread ( public $cond = 1; función pública ejecutar() ( $this->synchronized(function () ( for ($i = 0; $i notify(); if ($this->cond === 1) ( $esto->cond = 2; $esto->espera(); ) ) )); $contador->inicio(); $contador->sincronizado(función ($contador) ( if ($contador->cond !== 2) ( $contador->wait(); // espera a que el otro comience primero ) for ($i = 10; $notifico(); if ($contador->cond === 2) ( $contador->cond = 1; $contador->espera(); ) ) ), $contador); $contador->unirse(); /* Salida: int(0) int(10) int(1) int(11) int(2) int(12) int(3) int(13) int(4) int(14) int(5) int( 15) entero(6) entero(16) entero(7) entero(17) entero(8) entero(18) entero(9) entero(19) */

Es posible que observe condiciones adicionales que se han colocado en torno a la llamada a Threaded::wait . Estas condiciones son críticas porque permiten que la devolución de llamada sincronizada se reanude cuando se recibe una notificación y la condición especificada es verdadera. Esto es importante porque las notificaciones pueden provenir de lugares distintos a cuando se llama a Threaded::notify. Por lo tanto, si las llamadas al método Threaded::wait no estuvieran incluidas en condiciones, ejecutaremos falsas llamadas de atención, lo que provocará un comportamiento del código impredecible.

Conclusión

Analizamos las cinco clases del paquete pthreads (Threaded, Thread, Worker, Volatile y Pool) y cómo se usa cada clase. También analizamos el nuevo concepto de inmutabilidad en pthreads, hecho breve descripción capacidades de sincronización admitidas. Con estos conceptos básicos implementados, ahora podemos comenzar a ver cómo se pueden usar pthreads en casos del mundo real. Este será el tema de nuestro próximo post.

Si estás interesado en la traducción del próximo post, házmelo saber: comenta en las redes sociales. redes, vota y comparte la publicación con colegas y amigos.

Discusión roscada

A discusión enhebrada es una discusión electrónica (como una por correo electrónico, lista de correo electrónico, tablón de anuncios, grupo de noticias o foro de Internet) en los que el software ayuda al usuario agrupando mensajes visualmente. Los mensajes suelen agruparse visualmente en una jerarquía por tema. Un conjunto de mensajes agrupados de esta manera se denomina hilo temático o simplemente "hilo". Se dice que un foro de discusión, un cliente de correo electrónico o un cliente de noticias tiene "temas encadenados" si agrupa mensajes sobre el mismo tema para facilitar su lectura de esta manera. Además, las discusiones en hilos generalmente permiten a los usuarios responder a una publicación particular dentro del hilo de un tema. Como resultado, puede haber una jerarquía de discusiones dentro del tema del hilo. Varios tipos de software pueden permitir que esta jerarquía se muestre en lo que llamado modo roscado. (La alternativa es el modo lineal, que normalmente muestra todas las publicaciones en orden de fecha, independientemente de quién haya respondido específicamente a quién).

Ventajas

La ventaja de las vistas encadenadas jerárquicamente es que permiten al lector apreciar rápidamente la estructura general de una conversación: específicamente quién responde a quién. Como tal, es más útil en situaciones con conversaciones o debates extensos, como grupos de noticias: de hecho, para debates realmente complejos, rápidamente se vuelve imposible seguir el argumento sin algún tipo de sistema jerárquico.

Otro beneficio está en la apreciación más sutil de la comunidad en sistemas jerárquicamente subprocesos. Como las respuestas deben realizarse a publicaciones específicas, también se realizan a personas específicas. Por lo tanto, las conversaciones encadenadas tienden a centrar al escritor en los puntos de vista específicos y la personalidad del individuo al que se responde. Esto ocurre menos en foros donde el último comentario simplemente se inserta en el grupo general.

Desventajas

Una desventaja del roscado jerárquico sobre el roscado plano es un mayor nivel de complicación y, por lo tanto, dicha visión requiere un mayor nivel de comodidad y sofisticación por parte de sus usuarios. Por lo tanto, no sorprende que su adopción haya sido mayor en algunas de las comunidades en línea más antiguas y/o más sofisticadas, como Usenet, CIX o Slashdot. Los sistemas de chat y comentarios en la web son, en comparación, más jóvenes y abiertos a una audiencia más amplia y, como tal, los hilos jerárquicos se están volviendo comunes recientemente en esos ámbitos.

Imponer una jerarquía de árbol también tiende a fragmentar la discusión dentro de un tema: ya no es posible publicar un mensaje respondiendo o resumiendo varias publicaciones anteriores diferentes. En cambio, cada publicación anterior debe responderse individualmente. Es discutible que esto conduzca a un estilo de debate más confrontativo en foros que utilizan hilos jerárquicos. Sin embargo, por cierto que esto pueda ser, si una respuesta directa en un hilo ya no es posible debido al volumen de respuestas a la publicación deseada, los usuarios ahora suelen utilizar citas de la persona a la que están respondiendo para mantener la conversación encaminada y fluida. suavemente Esto es recomendado por la mayoría de las comunidades de foros de mensajes en caso de que el hilo haya alcanzado su límite completo.

Hilo abierto

Un hilo abierto se refiere a una publicación de blog donde los lectores pueden comentar y discutir cualquier tema que elijan. Suelen ser más útiles en blogs populares con grandes cantidades de tráfico; A menudo se utilizan cuando el autor del blog no tiene ningún tema sobre el que publicar o cuando hay una pausa en las publicaciones.

Los hilos abiertos también se utilizan para romper la monotonía de las publicaciones en las páginas principales de los blogs. Los comentarios pueden acumularse en publicaciones orientadas al contenido; por lo tanto, los autores utilizan los hilos abiertos para que los tiempos de carga de la página no se reduzcan.

Ejemplos

*Yahoo! Grupos [ http://groups.yahoo.com/], Grupos MSN [ http://groups.msn.com/] y barra diagonal [ http://www.slashdot.com/] todos ofrecen foros basados ​​en la web que presentan debates encadenados.

Ver también

*Escritura aérea académica
* Lista de términos de blogs

Referencias

*Dartmouth. (2003). [ http://www.dartmouth.edu/~webteach/articles/discussion.html "Realizar debates en línea" ]
*Wolsey, T. DeVere, [ http://www.readingonline.org/articles/art_index.asp?HREF=wolsey/index.html "Discusión literaria en el ciberespacio: adolescentes jóvenes que utilizan grupos de discusión interconectados para hablar sobre libros] . "Reading Online", 7(4), enero/febrero de 2004. Consultado el 30 de diciembre de 2007.

Fundación Wikimedia.

  • 2010.
  • León Powe

Barh Azoum

    Mira otros diccionarios: foro de internet

    - El paquete de software phpBB Internet Forum, uno de los paquetes de foros más populares... Wikipedia Historia de los entornos virtuales de aprendizaje década de 1990

    - En la historia de los entornos virtuales de aprendizaje, la década de 1990 fue una época de crecimiento, principalmente debido a la llegada de las computadoras asequibles y de Internet. Década de 1990 1990* Formal Systems Inc. de Princeton, Nueva Jersey, EE. UU. presenta una evaluación basada en DOS… … Wikipedia- Entorno educativo colaborativo cara a cara Desarrollador(es) Consorcio LEAD Versión estable 5.0/junio de 2010 Sistema operativo Plataforma cruzada... Wikipedia

    Hilo de conversación- es una característica utilizada por muchos clientes de correo electrónico, tableros de anuncios, grupos de noticias o foros de Internet en los que el software ayuda al usuario agrupando mensajes visualmente. Los mensajes suelen agruparse visualmente en una jerarquía por tema. Un conjunto de mensajes agrupados... ... Wikipedia

    Barra y punto- Captura de pantalla de la URL de la página principal de Slashdot.org slashdot.org Slogan News para nerds. Cosas que importan...Wikipedia

    MediosWiki- el espacio de nombres redirecciona aquí. Para obtener ayuda sobre el espacio de nombres MediaWiki en Wikipedia, consulte Ayuda: espacio de nombres MediaWiki. Para obtener información general sobre los espacios de nombres de Wikipedia, consulte Wikipedia: espacio de nombres. La página de discusión y la página de discusión de MediaWiki redirigen aquí. Para... ... Wikipedia

    Comunicación mediada por computadora- Para otros usos, consulte CMC (desambiguación). La comunicación mediada por computadora (CMC) se define como cualquier transacción comunicativa que ocurre mediante el uso de dos o más computadoras en red. Si bien el término se ha referido tradicionalmente a aquellos… … Wikipedia

    Comparación de software wiki- Las siguientes tablas comparan información general y técnica de varios paquetes de software wiki. Contenido 1 Información general 2 Público objetivo 3 Características 1 4 Características 2 … Wikipedia

    Escritura académica en el cielo- es un término acuñado por el científico cognitivo Stevan Harnad que describe la combinación de múltiples correos electrónicos y un archivo web con temas como un grupo de noticias, una lista de correo electrónico, un hipercorreo, netnews o un foro de Internet, vinculado y ordenable por fecha,… … Wikipedia

    Software colaborativo para la toma de decisiones- El software de toma de decisiones colaborativas (CDM) es una aplicación o módulo de software que coordina las funciones y características necesarias para llegar a decisiones colectivas oportunas, permitiendo que todas las partes interesadas relevantes participen en el proceso. El... ... Wikipedia

Recientemente probé pthreads y me sorprendió gratamente: es una extensión que agrega la capacidad de trabajar con múltiples subprocesos reales en PHP. Sin emulación, sin magia, sin falsificaciones: todo es real.



Estoy considerando tal tarea. Hay un conjunto de tareas que deben completarse rápidamente. PHP tiene otras herramientas para resolver este problema, no se mencionan aquí, el artículo trata sobre pthreads.



¿Qué son los subprocesos?

¡Eso es todo! Bueno, casi todo. De hecho, hay algo que puede molestar a un lector curioso. Nada de esto funciona en PHP estándar compilado con opciones predeterminadas. Para disfrutar del subproceso múltiple, debe tener habilitado ZTS (Zend Thread Safety) en su PHP.

configuración PHP

A continuación, PHP con ZTS. No importa la gran diferencia en el tiempo de ejecución en comparación con PHP sin ZTS (37,65 frente a 265,05 segundos), no intenté generalizar la configuración de PHP. En el caso sin ZTS, tengo habilitado XDebug, por ejemplo.


Como puede ver, cuando se utilizan 2 subprocesos, la velocidad de ejecución del programa es aproximadamente 1,5 veces mayor que en el caso del código lineal. Cuando se usan 4 hilos, 3 veces.


Puede observar que aunque el procesador es de 8 núcleos, el tiempo de ejecución del programa se mantuvo casi sin cambios si se utilizaron más de 4 subprocesos. Parece que esto se debe al hecho de que mi procesador tiene 4 núcleos físicos. Para mayor claridad, he representado la placa en forma de diagrama.


Reanudar

En PHP, es posible trabajar de manera bastante elegante con subprocesos múltiples utilizando la extensión pthreads. Esto da un aumento notable en la productividad.

Etiquetas: Agregar etiquetas

La madre de una buena amiga mía perdió su maleta en un vuelo de San Petersburgo a Moscú, tuvo que tomar otro vuelo a costas más cálidas y ahora ya estaba en el resort, sin traje de baño, sandalias y solo con una camiseta. -camisa de su equipaje de mano. Para recordar los viejos tiempos, le di un par de consejos sobre qué hacer y dónde correr, y hoy decidí escribir aquí todo lo que sé sobre un tema determinado.

Para explicar dónde soy tan inteligente, permítanme recordarles que en un momento trabajé en servicios terrestres para varias aerolíneas, incluso ocupándome de ciertos temas relacionados con la búsqueda de equipaje. Bueno, además de mi propia experiencia de vuelo, por supuesto. Sin embargo, porque Dejé la industria de servicios de aviación hace varios años, tal vez algunos matices hayan cambiado; si es así, aceptaré con gratitud los comentarios sobre el tema y corregiré la información en la publicación.

empezaré con esto Qué debe hacer para evitar que se pierda su equipaje:
1. Retire de su maleta todas las etiquetas y pegatinas de viajes anteriores, incluso las pequeñas con un código de barras, que a menudo están pegadas por separado a la maleta; pueden confundir el sistema automático de escaneo y clasificación de equipaje.
2. Cuelgue una etiqueta con su nombre en su maleta (bolsa, caja, paquete; en general, todo lo que facture como equipaje): puede comprar una opción reutilizable con anticipación o llevar una etiqueta de papel en el mostrador de facturación; generalmente todo Las aerolíneas medio decentes los reparten sin restricciones. Y Emirates, por ejemplo, generalmente tiene excelentes etiquetas de plástico con un cordón duradero que puede durar mucho tiempo:

Los viejos paranoicos pueden hacer como yo: siempre tengo una etiqueta de plástico reutilizable del juego Samsonite colgada en mi maleta con mi dirección permanente, mi número de teléfono y por correo electrónico, y cuando vuelo a algún lugar de vacaciones, además cuelgo una nota en papel en la que indico las fechas de mi estadía en el nuevo lugar y todos los contactos posibles (el nombre y dirección del hotel, su número de teléfono local, si lo hay, y mi nombre y apellido, por supuesto).
3. En el mostrador de facturación, asegúrese de que su equipaje tenga pegada la etiqueta de equipaje que imprime el agente de facturación, con el código de ciudad a la que vuela y el número de vuelo.
4. Si tiene varios vuelos de conexión, infórmelo al agente de facturación y especifique hasta qué punto desea facturar su equipaje. En algunos casos, será necesario recoger el equipaje en uno u otro aeropuerto a lo largo de la ruta, independientemente de su deseo: esto se aplica, por ejemplo, a los traslados entre aeropuertos (Orly y Charles de Gaulle en París, Domodedovo - Sheremetyevo - "Vnukovo " en Moscú), terminales separadas (terminales 1 y 2 en Frankfurt) o en el primer punto de llegada a EE. UU. o México; este es un requisito aduanero en estos países: suponga que está volando Moscú-Washington-Phoenix, una etiqueta de equipaje se emite para los tres segmentos a Phoenix, pero en Washington, el equipaje deberá recogerse físicamente, pasar por la aduana y registrarse nuevamente. Además, si factura un cochecito de bebé que se le permitió llevar antes del avión. , o un animal, probablemente tendrás que recogerlo en un punto de tránsito. En general, en el caso de una ruta compleja con transbordos, es mejor aclarar los detalles del movimiento del equipaje con antelación en el call center de la aerolínea o, en casos extremos, en el check-in.
5. Haz visible tu equipaje: los retrasos en el equipaje no siempre son culpa de los manipuladores de equipaje o de fallos en el sistema de clasificación. A veces, otro pasajero distraído, cansado después de un largo vuelo, saca del cinturón de equipaje el mismo Samsonite negro o una bolsa de deporte anodina que la suya. Por lo tanto, marque su equipaje: cuelgue un montón de cintas brillantes o un pequeño juguete de peluche en el asa, pegue una pegatina grande o simplemente dé preferencia a un color inusual al elegir una maleta.

¿Qué no se debe facturar en el equipaje?
Recuerde, todas las aerolíneas y aeropuertos pierden equipaje. Por supuesto, las estadísticas son diferentes para cada uno, pero incluso las aerolíneas más confiables pueden perder o retrasar el equipaje, e incluso en el aeropuerto más pequeño, donde un solo encargado de equipaje transportará un carrito con maletas directamente desde el mostrador de facturación al avión. Por eso, te aconsejo que lleves siempre en tu equipaje de mano:
- documentos importantes, incluidos aquellos que no son necesarios durante el vuelo (por ejemplo, en mi último viaje a San Petersburgo tuve que cambiar mi licencia y llevé en mi equipaje de mano un certificado de matrimonio y todo tipo de tarjetas de una escuela de manejo)
- llaves (en combinación con una etiqueta con su dirección, esto puede ser peligroso)
- dinero, joyas (sin comentarios)
- equipos costosos y frágiles
- medicamentos que tomes habitualmente, en la cantidad necesaria para el vuelo, y con una pequeña reserva en caso de que tengas que buscar un análogo en un país o ciudad extranjera. Los medicamentos recetados que no se pueden comprar en caso de pérdida de equipaje, llévelos con usted en la cantidad necesaria para todo el viaje.
- algo que pueda ser necesario con urgencia a su llegada (por ejemplo, cargador para teléfono
- algo que tiene un valor sentimental para ti personalmente: a veces el equipaje se pierde para siempre, y si perder tu diario personal te rompe el corazón, es mejor dejarlo en casa o llevártelo en el avión

Una historia instructiva: durante mi tiempo de trabajo en Lufthansa en San Petersburgo, un matrimonio de Estados Unidos vino corriendo a nuestra oficina, retorciéndose las manos: su equipaje, que contenía documentos muy importantes para el proceso de adopción, no había llegado. El juicio fue al día siguiente. Por supuesto, la aerolínea tiene la culpa de la pérdida de equipaje, pero ¿quién se beneficia de ello? Para evitar tal situación, bastaba con poner los papeles importantes en el equipaje de mano.

Entonces, llegaste y no encontraste tu equipaje en la cinta transportadora. ¿Qué hacer?
1. Si ha facturado en su equipaje algo más que maletas normales: esquís, un violonchelo, un panel de plasma del tamaño de una pared, un cochecito de bebé, un gran danés de mármol vivo, compruebe si existe un punto separado para la expedición del llamado. Equipaje de gran tamaño o equipaje voluminoso: el equipaje similar al que describí anteriormente a menudo se carga en un compartimento separado y se descarga por separado, manualmente. Si tu equipaje tampoco se encuentra allí
2. Dirígete al mostrador de seguimiento de equipaje o de Objetos perdidos. Allí deberá completar un formulario especial con información detallada sobre tu equipaje: ruta, apariencia, una breve lista de contenidos, sus contactos en su lugar de residencia permanente y estancia temporal. Además, en el servicio de seguimiento de equipaje es más probable que veas un cuadro de equipaje como este:

Es según esta clasificación que se codificará tu equipaje extraviado y, para que lo entiendas, estas dos maletas se codificarán igual:

Así que siéntete libre de agregar detalles adicionales en la descripción y no te saltes la cláusula de contenido. Como regla general, cuando complete por primera vez un informe de retraso de equipaje, se le pedirá que indique varios elementos del contenido mediante los cuales se puede identificar su maleta si no hay marcas de identificación en el exterior y será necesario abrir la maleta (si la bolsa está abierta, pondrás una notificación al respecto). Mal ejemplo: camiseta/libro/toallitas húmedas, buen ejemplo: bikini rojo vivo/catálogo de reproducciones de Malevich/plancha plegable. Después de completar la solicitud, el empleado del servicio de rastreo de equipaje le dará un número con el formato XXXYY11111, donde XXX es el código del aeropuerto de llegada, YY es el código de la aerolínea de llegada + 5 dígitos del número de serie de la solicitud: por ejemplo, JFKLH12345, si voló con Lufthansa al aeropuerto Kennedy de Nueva York. Recuerde o anote este número; será la forma más fácil de encontrar su solicitud en futuras solicitudes.
Utilizando el mismo número podrás comprobar el estado de la búsqueda TÚ MISMO (por alguna razón, el enlace desaparece: si no le funciona, busque en Google World Tracer Online y, literalmente, lo que necesita es el segundo enlace, con el título Seguimiento de equipaje en el sitio web worldtracer.aero), porque acceder a objetos perdidos y encontrados muchas veces es muy dificil
3. Intente ponerse en contacto con la oficina de su aerolínea en el aeropuerto de llegada: a veces (enfatizo, ¡A VECES!), si no ha volado a casa, sino a un lugar de estancia temporal (vacaciones, viaje de negocios), la aerolínea puede proporcionarle un conjunto de artículos de tocador (Lufthansa los tiene, incluida una camiseta de gran tamaño, un cepillo y pasta de dientes, un peine, pequeños paquetes de champú y gel de ducha, un paquete de detergente en polvo, etc.) o realizar un pequeño pago en efectivo para pequeños gastos. al contado (pago al contado en efectivo).

¿Qué pasará después?
Su expediente (el llamado AHL) irá al sistema centralizado de búsqueda de equipaje (World Tracer). Todos los equipajes no reclamados caen en el mismo sistema de búsqueda, sin importar si fueron encontrados sin etiqueta en los rincones del depósito de equipaje o permanecieron en la cinta de equipaje, para cada uno de estos artículos se crea un archivo con el formato XXXYY11111; también creado, solo que de un subtipo diferente: el llamado. informe disponible o OHD. Si los datos de los archivos AHL y OHD coinciden (apellido, descripción de la maleta, ruta, etc.), ambas estaciones (donde se reportó la pérdida del equipaje y donde se encontró el equipaje no reclamado) recibirán una notificación, y luego Es una cuestión de tecnología: volver a facturar y, en caso de éxito, enviar el equipaje a la ciudad deseada. Por supuesto, un gran número de salir adelante por sí mismo- mensajería, rechazo de maletas similares pero no iguales, además de respuestas a varias llamadas telefonicas- En general, el personal del servicio de búsqueda de equipaje nunca se aburre.
Estadísticas aproximadas: más del 90% del equipaje perdido se encuentra en los primeros 3 días de búsqueda, el 3% se pierde para siempre.
¿Qué puedes hacer?
1. Si tiene que comprar algo que necesita con urgencia a su llegada (desde un cepillo de dientes hasta un traje de negocios), asegúrese de conservar los recibos para una compensación posterior. Sin embargo, debes evitar compras costosas e innecesarias; te explicaré por qué más adelante.
2. Siguiendo nuevos pasos, haga la lista más detallada de contenidos, preferiblemente con color, marca y costo aproximado cada artículo, idealmente en inglés (de lo contrario, un empleado de la aerolínea tendrá que traducir esta lista para ingresar al sistema), comuníquese con la aerolínea y envíeles esta lista, se agregará a la aplicación de búsqueda de equipaje. Durante los primeros 5 días, la búsqueda de equipaje se realiza en el aeropuerto de llegada, luego la búsqueda pasa a ser responsabilidad de la aerolínea transportista (la aerolínea que se indica en el número de solicitud, ¿recuerda JFKLH12345?), y después de 21 días, usted puede solicitar una compensación final.
3. Si transcurridos 21 días desde la fecha de presentación de la declaración de equipaje perdido no se ha encontrado, comuníquese con la aerolínea transportista para exigir una compensación. Si no me equivoco, el plazo de prescripción es de 2 años, es decir. Puede solicitar una compensación dentro de los dos años a partir de la fecha de presentación de una reclamación por pérdida.

Pago de compensación.
Para pagar la compensación, deberá comunicarse con la oficina de representación de su aerolínea con una solicitud de pago, documentos que confirmen el vuelo y el hecho de la pérdida de equipaje (tarjetas de embarque, etiquetas de equipaje, número de reclamo por pérdida de equipaje, detalles de pago). Si no me equivoco, en la Federación de Rusia la decisión sobre la indemnización debe examinarse legalmente en un plazo de 30 días. También se le puede pedir que calcule el costo del contenido y, si es posible, proporcione recibos de la compra de la maleta y los artículos que contiene (entiendo que esto no es realista en la mayoría de los casos, pero es parte del procedimiento).
Anteriormente, los pagos se realizaban en función del peso del equipaje facturado: alrededor de 20 dólares por kilogramo. Posteriormente se cambió el sistema de pago y se limitó la responsabilidad de las aerolíneas a 1.000 unidades convencionales (el coste de una unidad convencional se calcula dentro de la aerolínea), lo que en el momento de mi trabajo correspondía a aproximadamente 1.300 euros. Aquellos. Incluso si traes un recibo por la compra de una maleta Louis Vuitton hecha con mil pieles de geco boliviano y rellena de diamantes, no obtendrás más de 1.300 euros.