2012-09-14 20 views
6

私はGTFSプロトコルバッファメッセージ(VehiclePosition.pb)と対応するプロトコルフォーマット(gtfs-realtime.proto)を持っています。私はPHPだけでメッセージを読んでみたいと思います。PHPでGTFSプロトコルバッファを読むには?

私はGoogleのpythonチュートリアルhttps://developers.google.com/protocol-buffers/docs/pythontutorialとエンコーディングのドキュメントhttps://developers.google.com/protocol-buffers/docs/encodinghttps://github.com/maxious/ACTBus-ui/tree/master/lib/Protobuf-PHPを見ていましたが、何が起こっているのかを概念化するのは本当に苦労しています。私はgtfs-realtime.phpがgtfs-realtime.protoで定義されているエンコーディングのコンパイルされた命令セットであることを理解していると思いますが(私が間違っていれば私を修正してください)、VehiclePosition.pbをデコードする方法を知りません。また、gtfs-realtime.php(またはそれに相当するPythonの同等物)の依存関係は何ですか?私がやりたいことがVehiclePosition.pbを読んでいれば、自分でコンパイルする必要があるものか、単純なPHPスクリプトでないものがありますか?

ありがとうございました。 manページから取られたよう

<?php 
require_once 'DrSlump\Protobuf.php'; 

use DrSlump\Protobuf; 

$data = file_get_contents('data.pb'); 
$person = new Tutorial\Person($data); 
echo $person->getName(); 

:そのステップの前にhttp://drslump.github.io/Protobuf-PHP/protobuf-php.3.html

、私はあなたがCLIを使用してPHPクラスを生成する必要があると思う

答えて

1

edmonscommerceとJulianは適切なトラックにあります。

しかし、私は同じ経路をたどってきましたが、私はプロトコルバッファのPHP実装が厄介であることを発見しました(特にNYCTのMTAフィードの場合)。


代替方法(コマンドライン+ JSON):

あなたは、コマンドラインツールやJSONに慣れている場合、私はシンプルなJSONにGTFSリアルタイムに変換するスタンドアロンのツールを書いた:https://github.com/harrytruong/gtfs_realtime_json

ダウンロード(インストールなし)して実行してください:gtfs_realtime_json <feed_url>

ここにはsample JSON outputがあります。

は自分のスクリプトと同じディレクトリにgtfs_realtime_jsonを入れ、PHPでこれを使用して、次を実行するには、次の

<?php 

$json = exec('./gtfs_realtime_json "http://developer.mbta.com/lib/GTRTFS/Alerts/VehiclePositions.pb"'); 
$feed = json_decode($json, TRUE); 

var_dump($feed); 
0

申し訳ハリー・チュオン、私はあなたの実行を試みたが、それは常にNULLを返します。 私は間違っていますか?

編集:問題は、自分のサーバーで実行する権限がないことです。実行可能ファイルをありがとう。