tomasz-rup / sf-thrift-plugin
symfony 1.x Apache Thrift plugin
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony1-plugin
pkg:composer/tomasz-rup/sf-thrift-plugin
Requires
This package is auto-updated.
Last update: 2025-10-29 02:50:14 UTC
README
A simple symfony 1.x Apache Thrift plugin. Base for other Thrift plugins.
Installation
- 
Install the plugin $ composer require tomasz-rup/sf-thrift-plugin 
Configuration
- 
Configuration is in app.yml: all: thrift_plugin: default: connector: class: TSocket param: host: 127.0.0.1 port: 9090 transport: class: TBufferedTransport protocol: class: TBinaryProtocol 
Connectors
- 
THttpClient HTTP client Params: - host [required] The host to connect to
- port [optional, default: 80] The port to connect on
- uri [optional, default: ''] The URI to request
- scheme [optional, default: 'http'] The scheme to use for the request, i.e. http, https
- timeout [optional, default: null] Read timeout
 
- 
TMemoryBuffer A memory buffer is a tranpsort that simply reads from and writes to an in-memory string buffer. Anytime you call write on it, the data is simply placed into a buffer, and anytime you call read, data is read from that buffer. Params: - buf [optional, default: ''] Initial buffer value
 
- 
TPhpStream Php stream transport. Reads to and writes from the php standard streams php://input and php://output Params: - mode [required]
 
- 
TServerSocket Params: - host [optional, default: 'localhost'] Host to listen on
- port [optional: default: 9090] Port to listen on
 
- 
TSocket Params: - host [optional, default: 'localhost'] Remote hostname
- port [optional: default: 9090] Remote port
- persist [optional, default: false] Whether to use a persistent socket
- send_timeout [optional, default: 100] Send timeout in milliseconds
- recv_timeout [optional, default: 750] Recv timeout in milliseconds
 
- 
TSocketPool Params: - hosts [optional, default: array('localhost')] List of remote hostnames
- ports [optional default: array(9090)] List of remote ports, or a single common port
- persist [optional, default: false] Whether to use a persistent socket
- send_timeout [optional, default: 100] Send timeout in milliseconds
- recv_timeout [optional, default: 750] Recv timeout in milliseconds
 
Transports
- 
TBufferedTransport Buffered transport. Stores data to an internal buffer that it doesn't actually write out until flush is called. For reading, we do a greedy read and then serve data out of the internal buffer. Params: - read_buf_size [optional, default: 512] The receive buffer size
- write_buf_size [optional, default: 512] The write buffer size
 
- 
TFramedTransport Framed transport. Writes and reads data in chunks that are stamped with their length. Params: - read [optional, default: false] Buffer for read data.
- write [optional, default: false] Buffer for queued output data
 
- 
TNullTransport Transport that only accepts writes and ignores them. This is useful for measuring the serialized size of structures. 
Protocols
- 
TBinaryProtocol Binary protocol. Params: - strict_read [optional, default: false]
- strict_write [optional, default: true]
 
- 
TBinaryProtocolAccelerated Accelerated binary protocol. Params: - strict_read [optional, default: false]
- strict_write [optional, default: true]
 
- 
TCompactProtocol Compact protocol. 
Use
- 
Generate files thrift --gen php example.thrift 
- 
Copy those generated files to your project lib directory 
- 
Remove include ...lines from generated files
- 
Create a client object: $service = new example_serviceClient(ThriftProtocolFactory::factory()); 
More Thrift services
We can create many named configurations:
all: thrift_plugin: # First service configuration service1: connector: class: TSocket param: host: 127.0.0.1 port: 9090 transport: class: TBufferedTransport protocol: class: TBinaryProtocol # Second service configuration service2: connector: class: TSocket param: host: 192.168.1.1 port: 9091 transport: class: TFramedTransport protocol: class: TBinaryProtocolAccelerated
Now we can use it:
$service1 = new FirstClient(ThriftProtocolFactory::factory('service1')); $service2 = new SecondClient(ThriftProtocolFactory::factory('service2'));
Example
This is example from Thrift project site:
- 
Create UserStorage.thriftfile:struct UserProfile { 1: i32 uid, 2: string name, 3: string blurb } service UserStorage { void store(1: UserProfile user), UserProfile retrieve(1: i32 uid) }
- 
Generate UserStorage service files for PHP: thrift --gen php UserStorage.thrift 
- 
Move generated files to proper place (like lib/thrift folder) 
- 
Remove include ...lines from generated files
- 
Use client: $service = new UserStorageClient(ThriftProtocolFactory::factory()); $service->store($user); $user2 = $service->retrieve(1);