diff --git a/lib/php/src/protocol/TBinaryProtocol.php b/lib/php/src/protocol/TBinaryProtocol.php
index 69723da..63b10bf 100644
--- a/lib/php/src/protocol/TBinaryProtocol.php
+++ b/lib/php/src/protocol/TBinaryProtocol.php
@@ -1,4 +1,5 @@
 <?php
+include_once $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';
 
 /**
  * Copyright (c) 2006- Facebook
@@ -398,4 +399,19 @@
   }
 }
 
+/**
+ * Accelerated binary protocol: used in conjunction with the thrift_protocol
+ * extension for faster deserialization
+ */
+class TBinaryProtocolAccelerated extends TBinaryProtocol {
+  public function __construct($trans, $strictRead=false, $strictWrite=true) {
+    // If the transport doesn't implement putBack, wrap it in a
+    // TBufferedTransport (which does)
+    if (!method_exists($trans, 'putBack')) {
+      $trans = new TBufferedTransport($trans);
+    } 
+    parent::__construct($trans, $strictRead, $strictWrite);
+  }
+}
+
 ?>
diff --git a/lib/php/src/transport/TBufferedTransport.php b/lib/php/src/transport/TBufferedTransport.php
index 2ce47e3..4ed0737 100644
--- a/lib/php/src/transport/TBufferedTransport.php
+++ b/lib/php/src/transport/TBufferedTransport.php
@@ -77,24 +77,28 @@
     $this->transport_->close();
   }
 
-  public function readAll($len) {
-    return $this->transport_->readAll($len);
+  public function putBack($data) {
+    if (empty($this->rBuf_)) {
+      $this->rBuf_ = $data;
+    }
+    else {
+      $this->rBuf_ = ($data . $this->rBuf_);
+    }
   }
   
   public function read($len) {
-    // Methinks PHP is already buffering these for us
-    return $this->transport_->read($len);
+    if (empty($this->rBuf_)){
+      $this->rBuf_ = $this->transport_->read($this->rBufSize_);
+    }
 
-    if (strlen($this->rBuf_) >= $len) {
-      $ret = substr($this->rBuf_, 0, $len);
-      $this->rBuf_ = substr($this->rBuf_, $len);
+    if (strlen($this->rBuf_) <= $len) {
+      $ret = $this->rBuf_;
+      $this->rBuf_ = '';
       return $ret;
     }
 
-    $this->rBuf_ .= $this->transport_->read($this->rBufSize_);
-    $give = min(strlen($this->rBuf_), $len);
-    $ret = substr($this->rBuf_, 0, $give);
-    $this->rBuf_ = substr($this->rBuf_, $give);
+    $ret = substr($this->rBuf_, 0, $len);
+    $this->rBuf_ = substr($this->rBuf_, $len);
     return $ret;
   }
 
@@ -111,6 +115,7 @@
       $this->transport_->write($this->wBuf_);
       $this->wBuf_ = '';
     }
+    $this->transport_->flush();
   }
 
 }
diff --git a/lib/php/src/transport/TFramedTransport.php b/lib/php/src/transport/TFramedTransport.php
index 63f5b0f..5750d78 100644
--- a/lib/php/src/transport/TFramedTransport.php
+++ b/lib/php/src/transport/TFramedTransport.php
@@ -94,7 +94,7 @@
     }
 
     // Just return full buff
-    if ($len > strlen($this->rBuf_)) {
+    if ($len >= strlen($this->rBuf_)) {
       $out = $this->rBuf_;
       $this->rBuf_ = null;
       return $out;
@@ -107,6 +107,20 @@
   }
 
   /**
+   * Put previously read data back into the buffer
+   *
+   * @param string $data data to return
+   */
+  public function putBack($data) {
+    if (empty($this->rBuf_)) {
+      $this->rBuf_ = $data;
+    }
+    else {
+      $this->rBuf_ = ($data . $this->rBuf_);
+    }
+  }
+
+  /**
    * Reads a chunk of data into the internal read buffer.
    */
   private function readFrame() {
@@ -150,4 +164,4 @@
     $this->wBuf_ = '';
   }
 
-}
\ No newline at end of file
+}
