Cómo leer el buffer de protocolo GTFS en PHP?

Tengo un mensaje de buffer de protocolo GTFS (VehiclePosition.pb), y el formato de protocolo correspondiente (gtfs-realtime.proto), me gustaría leer el mensaje en PHP solo (¿eso es posible?).

Miré el tutorial de python de Google https://developers.google.com/protocol-buffers/docs/pythontutorial y la documentación de encoding https://developers.google.com/protocol-buffers/docs/encoding y https: // github. com / maxious / ACTBus-ui / tree / master / lib / Protobuf-PHP , pero estoy teniendo un momento muy difícil para conceptualizar lo que está sucediendo. Creo que entiendo que gtfs-realtime.php es un conjunto de instrucciones comstackdas de la encoding definida en gtfs-realtime.proto (corrígeme si me equivoco), pero no tengo ni idea de cómo decodificar VehiclePosition.pb. Además, ¿cuáles son las dependencias de gtfs-realtime.php (o el equivalente de python para el caso)? ¿Hay algo más que tengo que comstackr yo mismo o algo que no sea una simple secuencia de comandos php si todo lo que quiero hacer es leer VehiclePosition.pb?

Gracias.

Puede usar la herramienta oficial: https://developers.google.com/transit/gtfs-realtime/code-samples#php

Fue lanzado recientemente. Lo he usado por unos días y funciona como un encanto.

edmonscommerce y Julian están en el camino correcto.

Sin embargo, he seguido el mismo camino y descubrí que la implementación PHP de Protocol Buffers es engorrosa (especialmente en el caso del feed MTA de NYCT).


Método alternativo (línea de comando + JSON):

Si se siente cómodo con las herramientas de línea de comandos y JSON, escribí una herramienta independiente que convierte GTFS-tiempo real en JSON simple: https://github.com/harrytruong/gtfs_realtime_json

Simplemente descarga (sin instalar) y ejecuta: gtfs_realtime_json

Aquí hay una muestra de salida JSON .

Para usar esto en PHP , simplemente ponga gtfs_realtime_json en el mismo directorio que sus scripts y ejecute lo siguiente:

  

Asumiría algo similar a este fragmento:

 getName(); 

como tomado de la página man: http://drslump.github.io/Protobuf-PHP/protobuf-php.3.html

Antes de ese paso, creo que debes generar tus clases PHP usando la herramienta CLI como se describe aquí: http://drslump.github.io/Protobuf-PHP/protoc-gen-php.1.html

así que algo como:

 protoc-gen-php gtfs-realtime.proto 

Lo siento Harry Truong, probé tu ejecutable pero siempre devuelve NULL. ¿Que estoy haciendo mal?

Editar: El problema es que no tengo permiso para ejecutar en mi servidor. Gracias por tu ejecutable.