Silex - 在JSON中序列化数据库结果集的最快方法是什么?

时间:2015-06-03 15:20:41

标签: php json silex dbal

目前我使用DBAL 从db检索记录,然后我转换相应对象中的每一行。每个对象都附加到一个数组,最后它是converted to json with json() function。 示例代码:

class MyController extends BaseController {
  public function getById(Request $request, Application $app, $id) {
      $this->app = $app;
      $sql = "SELECT * FROM table ...";
      $stmt = $app['db']->prepare($sql);
      $stmt->execute();
      $obj = $stmt->fetchAll(\PDO::FETCH_ASSOC);
      return $app->json($this->convert($obj));
    }


  public function convert($resultset) {
    $result = array();

    foreach ($resultset as $key => $row) {
        $myObj = new MyObj();
        $myObj->setId($row['id']);
        // and so on
    }

    return $result;
  }
}

这种序列化方法可以更快地修改吗?假设我必须发送一个REST客户端十万个对象,是否有a sort of streming mode like for files所以我可以避免在临时数组中缓冲所有结果? 感谢

1 个答案:

答案 0 :(得分:2)

如果您的类属性映射到数据库中的列名,则可以使用Mat matrix; string nodeName = "sample_matrix"; using (CvFileStorage fs = new CvFileStorage(xmlfile, null, FileStorageMode.Write)) { fs.Write(nodeName, matrix.ToCvMat()); fs.StartNextStream(); } 直接获取对象。这不会给你任何流媒体,但它将跳过整个转换步骤:

PDO::FETCH_CLASS