¿Cómo combina Facebook múltiples lenguajes de programación si el archivo principal es index.php y no puede tener otro lenguaje que PHP?

La forma más fácil de entender es que si desea utilizar múltiples lenguajes de programación, deberá acordar una forma de comunicación entre esos idiomas. Si el sistema A está pidiendo tareas, esto tiene que ser de una manera que el sistema B entienda.

Un ejemplo es una interfaz REST
En este ejemplo, el cliente pregunta al servidor si tengo alguna tarea llamando a una solicitud http normal. El servidor sabe lo que espera el cliente y en este caso probablemente le dará una lista de tareas en formato xml. El cliente probablemente sabrá que está recuperando xml y hará con él lo que quiera.

Entonces, incluso si index.php es su punto de entrada (si es un programador decente, este no es su archivo principal), otras piezas de código manejarán la información proporcionada por un sistema externo.

No tengo experiencia en primera persona con Facebook, pero hay tres métodos generales para hacerlo:

  1. Poner cada cuerpo de funcionalidad detrás de una API (probablemente usando Thrift)
  2. Escribir módulos PHP (que están escritos en C) para interactuar con diferentes lenguajes.
  3. Proceso externo de llamada (costoso e ineficiente)

(3) no es una opción, pero (1) es común y (2) es útil si puede generar una interfaz basada en C entre lenguajes y el equipo tiene la experiencia para hacerlo (obviamente, no es un problema con Facebook).

También hay una cuarta opción secreta para las tecnologías relacionadas con Facebook: HipHop. HHVM (HHVM) es la herramienta de conversión PHP-> C ++ de Facebook. Si hay una manera de citar sus bibliotecas C ++ directamente desde su código PHP (pseudo por ejemplo: IMPORT (“CPP_LIBRARY”)), que luego se vuelve válido después de traducir su PHP * a * C ++ a través de HH, entonces puede escribir activamente C ++ y PHP código, e integrarlos simplemente se convierte en un detalle de construcción.

Facebook utiliza un protocolo de llamada a procedimiento remoto (rpc) llamado thift.

https://thrift.apache.org/
http://en.m.wikipedia.org/wiki/A

Esto permite que varios idiomas admitidos se comuniquen a través de sus enlaces.

Además de usar Apache Thrift – Home, puede llamar a otros idiomas desde PHP.

Aquí hay un ejemplo de envolver una clase C ++ en una extensión PHP (envolver clases C ++ en una extensión PHP) que le permitiría llamarla directamente. En la actualidad, muchos lenguajes admiten alguna forma de FFI (interfaz de función externa), que les permite al menos llamar al código C.

Facebook es una empresa muy grande y no tienen un solo bloc de notas para crear y desarrollar, tienen una gran cantidad de software. Su software php no podrá leer otros códigos, pero puede referirse a un enlace que tiene el otro idioma, lo único que le importa es el producto, por lo que cuando llama a un enlace ese enlace puede tener otro idioma en la parte posterior, pero lo que importa es el producto que proporcionan esos códigos.

No creo, puedo responder mejor a su pregunta, pero le sugiero que piense en hacerlo prácticamente. También necesitará un servidor que ejecute tanto el lenguaje de fondo. Y compañías como Google y Facebook, ambas tienen eso.

Una posible forma de utilizar varias tecnologías en la combinación es usar mensajería y API REST.

More Interesting

¿Qué lenguaje de programación debo usar para crear sitios web de redes sociales similares a Facebook o YouTube?

¿Cuáles son los pros y los contras de usar una DSLR para la transmisión?

¿Puedes convertirte en diseñador web solo por ser un experto en WordPress y sin conocer HTML y CSS?

Cómo recuperar el valor seleccionado por el usuario para el botón de opción en php

¿Es posible que alguien que no tenga antecedentes de JavaScript vaya directamente y aprenda nodejs?

¿Por qué uno usaría PHP en lugar de Node.js para un nuevo proyecto?

Cómo pasar por un proyecto masivo de MVC existente

Cómo filtrar todos los parámetros GET en mi sitio web

Los frameworks de back-end que utilizan JavaScript están ganando popularidad, ¿tiene sentido aprender Python para el desarrollo web?

Cómo entender el servicio $ q de Angular JS

¿Cuál es la principal diferencia entre http y html?

¿El mejor código para UX fuera del front-end? ¿Estoy bastante aburrido con el front end y me pregunto cuál es la mejor codificación para aprender a hacer UX para aplicaciones o IOT?

¿Cómo pueden comunicarse los diseñadores con los desarrolladores front-end a través de JIRA?

¿Cuál es la mejor manera para que un desarrollador centrado en el backend aprenda frontend, principalmente CSS?

¿Cómo puedo hacer que un sitio sea más amigable para dispositivos móviles? Desarrollé wizmobilerepair.com con un ancho fijo de 1024px y me di cuenta de que esto no tiene fluidez. ¿Qué puedo hacer para implementar un diseño web receptivo?