Simon,

you need to call:

$transport->open();

before making any calls to the server. That opens the socket to the server.

The error 'supplied argument is not a valid stream resource' means 'not a valid open socket'.

And after you're done with your server calls, call:

$transport->close();

to close the socket and free up the file descriptor.

Thanks.

Paul

On Sep 18, 2009, at 3:25 PM, Simon Chu wrote:

This is my entire program: (transport is not null, and no exception thrown there...)

it threw exception at the last line:

    $socket = new TSocket("thriftpuzzle.facebook.com", 9030);
    if (($transport = new TBufferedTransport($socket)) == null) {
       printf("Transport is null");
    }
    $protocol  = new TBinaryProtocol($transport);

    //$ssclient = new SimonSaysClient("thriftpuzzle.facebook.com");
    $ssclient = new SimonSaysClient($protocol);
$ssclient->registerClient("[email protected]"); // replace emailaddr with your email addr

Output:
PHP Warning: stream_set_timeout(): supplied argument is not a valid stream resource in /home/simon/PROG/PHP/UTILITY/trunk/facebook/ thrift/transport/TSocket.php on line 281 PHP Warning: stream_get_meta_data(): supplied argument is not a valid stream resource in /home/simon/PROG/PHP/UTILITY/trunk/facebook/ thrift/transport/TSocket.php on line 287 Failed registeringTSocket: Could not write 55 bytes thriftpuzzle.facebook.com:9030

On Fri, Sep 18, 2009 at 3:03 PM, Samir Mulder <[email protected]> wrote:
Are you sure you successfully opened the transport?

If possible, can you post the sample client prog you have so far?

Samir


On Sep 18, 2009, at 2:54 PM, Simon Chu wrote:

PHP Warning: stream_set_timeout(): supplied argument is not a valid stream
resource in
/home/simon/PROG/PHP/UTILITY/trunk/facebook/thrift/transport/ TSocket.php on
line 281
PHP Warning:  stream_get_meta_data(): supplied argument is not a valid
stream resource in
/home/simon/PROG/PHP/UTILITY/trunk/facebook/thrift/transport/ TSocket.php on
line 287
Failed registeringTSocket:

Exception msg
Could not write 55 bytes http://thriftpuzzle.facebook.com:9030

Sorry if this is a repeat, not sure if my last post went through.

Simon

On Fri, Sep 18, 2009 at 11:43 AM, bill fumerola <[email protected]> wrote:

On Fri, Sep 18, 2009 at 11:07:10AM -0700, Simon Chu wrote:
i)  is the C, cpp interface similar, please give example

c++ interface is as identical as a php and c++ implementation can be.

shared_ptr<TSocket> socket (new TSocket(host, port));
shared_ptr<TTransport> transport (new TBufferedTransport(socket);
shared_ptr<TProtocol> protocol (new TBinaryProtocol(transport));
shared_ptr<myClient> client (new myClient(protocol);

try {
transport->open();
int ret = client->someCallReturnsInt();
} catch (exception &e) {
cout << "exception: " << e.what() << endl;
}

ii) I got further. Where is TException defined? What is the method to
print out exception message?

TException inherits from Exception.


http://svn.apache.org/repos/asf/incubator/thrift/trunk/lib/php/src/Thrift.php

http://us2.php.net/manual/en/language.exceptions.php

e.g.
try {
$transport->open();
} catch (Exception $e) {
echo $e->getMessage();
}


-- bill




Reply via email to