php - remove - strip_tags wordpress
problema de rendimiento serializador jms (3)
¿Estás usando respuestas parciales? su problema parece bastante obvio. En mi opinión, su cliente debe solicitar un número limitado de artículos y pedir más cuando sea necesario ...
Estoy usando el Serializador JMS. Y descubrí que el rendimiento es realmente malo cuando uso big data. Tengo la siguiente estructura de objeto que se muestra como una matriz:
$jsonData = array(
''message'' => ''this is a nice message'',
''data'' => array(
0 => array(
''firstname'' => ''achim'',
''lastname'' => ''menzel''
)
)
);
Así es como serializo los datos:
$serializer = $this->get(''serializer'');
$encodedJson = $serializer->serialize($jsonData, ''json'');
$response = new Response($encodedJson);
$response->headers->set(''Content-Type'', ''application/json'');
Los datos pueden ser una lista de 1
hasta n
objetos. Cuando tengo más de 500 objetos en datos, el rendimiento es muy lento (más de 5 segundos). Cuando uso json_encode()
directamente, no tardé más de 1 segundo.
¿Cómo puedo mejorar el uso del Serializador JMS? No creo que el serializador jms no pueda manejar big data.
Esta es la clase principal que se utilizará para la serialización:
class JsonData {
public $success = false;
public $message = '''';
public $data;
public $responseCode = 200;
public $contentType = ''application/json'';
}
Y actualmente este objeto está dentro de $data
:
class GuestDTO {
private $userid;
private $firstname;
private $lastname;
private $birthday;
private $picturemedium;
private $picturelarge;
private $gender;
private $modifydate;
private $entries = array();
}
Y $entries
es una lista de objetos de esta clase:
class GuestlistentryDTO extends AbstractGuestDTO{
private $guestlistentryid;
private $guestlistid;
private $arrivedat;
private $bouncername;
private $rejectionreason;
private $companioncount;
private $companioncountcheckin;
private $winner;
private $vip;
}
Sin anotaciones porque preparé mis dto para usar los datos que necesito.
Lamentablemente, esta biblioteca es inherentemente bastante lenta. Hay mucha recursión allí.
Sin embargo, hay un par de cosas que puedes hacer para cache de consultas, todo utilizando Redis o Memcache. También puede ser inteligente con sus consultas SQL, trate de recortar la grasa. Solo proporcione al serializador la información importante que necesita para que no rastree muchos datos que de todos modos no se utilizarán.
También me he topado con el mismo problema y la "mejor solución" ha sido crear un caché para la salida json generada en Redis y tapar eventos de Doctrine CRUD en entidades específicas para vaciar el caché.
Alguna ayuda provino de una mezcla de grupos ajustada y reglas de inclusión / exclusión para colecciones referenciadas