JMS Serializer kullanıyorum. Ve büyük veri kullandığımda performansın gerçekten kötü olduğunu öğrendim.jms serializer performans sorunu
$serializer = $this->get('serializer');
$encodedJson = $serializer->serialize($jsonData, 'json');
$response = new Response($encodedJson);
$response->headers->set('Content-Type', 'application/json');
Veri 1
n
kadar nesnelerin bir listesi olabilir:
$jsonData = array(
'message' => 'this is a nice message',
'data' => array(
0 => array(
'firstname' => 'achim',
'lastname' => 'menzel'
)
)
);
Bu benim verilerini seri nasıl: Ben bir dizi olarak görüntülenen aşağıdaki nesne yapısını ettik. Verilerdeki 500'den fazla nesneye sahip olduğumda, performans çok yavaş (5 saniyeden fazla). Doğrudan json_encode()
'u kullandığımda, 1 saniyeden fazla değil.
JMS Serializer'ın kullanımını nasıl geliştirebilirim? Jms serializer'ın büyük veriyi işleyeceğini sanmıyorum.
Bu seri için kullanılacak olan ana sınıf:
class JsonData {
public $success = false;
public $message = '';
public $data;
public $responseCode = 200;
public $contentType = 'application/json';
}
ve şu anda bu amaç, içinde $data
olup:
class GuestDTO {
private $userid;
private $firstname;
private $lastname;
private $birthday;
private $picturemedium;
private $picturelarge;
private $gender;
private $modifydate;
private $entries = array();
}
ve $entries
bu sınıftan nesnelerin bir listesi:
class GuestlistentryDTO extends AbstractGuestDTO{
private $guestlistentryid;
private $guestlistid;
private $arrivedat;
private $bouncername;
private $rejectionreason;
private $companioncount;
private $companioncountcheckin;
private $winner;
private $vip;
}
çünkü dto'ları ihtiyacım olan verileri kullanması için hazırladım.
Eğer JMSSerializer parçaları xhprof veya Xdebug ve cachegrind/KCacheGrind/webgrind ile her şeyi yavaşlatan hangi teftiş denediniz başvurulan koleksiyonları için grupları ve içerme/dışlama kuralları ince ayarlı karışımı geldi? JMS serileştirici - filtreleme değerleri veya sanal alanlar gibi serileştirme işleminize özel olarak özel bir antivirüsünüz var mı? – nifr
Sadece jms serializer'ın isteği yavaşlatan kısım olduğunu öğrendim. Herhangi bir ayar veya ek açıklama ayarlamıyorum çünkü ihtiyaç duyduğum doğru özniteliklere sahip DTO Nesneleri kullanıyorum, bu yüzden herhangi bir ayar ayarlamanıza gerek yok. –
, kuruluşunuzu hızlı bir şekilde sağlayabilir, böylece buradaki performans etkisi hakkında geri bildirim verebilir miyim? – nifr