¿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.