JMSシリアライザーを使用しています。そして、ビッグデータを使用すると、パフォーマンスが非常に悪いことがわかりました。次のオブジェクト構造を配列として表示しました。
$jsonData = array(
'message' => 'this is a nice message',
'data' => array(
0 => array(
'firstname' => 'achim',
'lastname' => 'menzel'
)
)
);
これは、データをシリアル化する方法です。
$serializer = $this->get('serializer');
$encodedJson = $serializer->serialize($jsonData, 'json');
$response = new Response($encodedJson);
$response->headers->set('Content-Type', 'application/json');
データは、1
レジn
オブジェクトのリストにすることができます。データに 500 を超えるオブジェクトがあると、パフォーマンスが非常に遅くなります (5 秒以上)。直接使用json_encode()
すると、1秒もかかりませんでした。
JMS シリアライザーの使用を改善するにはどうすればよいですか? jmsシリアライザーがビッグデータを扱えないとは思いません。
これは、シリアル化に使用されるメイン クラスです。
class JsonData {
public $success = false;
public $message = '';
public $data;
public $responseCode = 200;
public $contentType = 'application/json';
}
そして現在、このオブジェクトは内部にあります$data
:
class GuestDTO {
private $userid;
private $firstname;
private $lastname;
private $birthday;
private $picturemedium;
private $picturelarge;
private $gender;
private $modifydate;
private $entries = array();
}
And$entries
は、このクラスのオブジェクトのリストです。
class GuestlistentryDTO extends AbstractGuestDTO{
private $guestlistentryid;
private $guestlistid;
private $arrivedat;
private $bouncername;
private $rejectionreason;
private $companioncount;
private $companioncountcheckin;
private $winner;
private $vip;
}
必要に応じてデータを使用するために dto を準備したため、注釈はありません。