35. Tiempo de Hidratación Optimizando Doctrine Compatibilidad entre estrategias en la vista <td> <?phpecho$user->get("name") ?></td> <td> <?phpecho$user->name ?></td> <?php$user= $user->getRawValue() ?> <td> <?phpecho$user["name"] ?></td>
36. T. Conversión de Consulta Optimizando Doctrine $q = Doctrine::getTable("Country")->createQuery(); $q->getSqlQuery(). 0.006 seg Gallery1..n GalleryImagesn..1 Image $q= Doctrine::getTable("Gallery")->createQuery("g")->leftJoin("g.images"); $q->getSqlQuery(); 0.1 seg
37. Conteo de Registros Optimizando Doctrine $clist = Doctrine::getTable("Country”) ->findAll()->count(); ->createQuery()->count(); ->createQuery()->select("count(id)")->execute( array (), Doctrine::HYDRATE_NONE ); $conn->execute("select count(id) as count from countries")->fetchAll(); 0.2 seg 0.0056 seg 0.01 seg 0.00087 seg
39. Select, Joins e Indices Optimizando Doctrine $articles = Doctrine::getTable("Article")->createQuery("a")->leftJoin("a.pages p") ->limit(100)->execute(); ->limit(1000)->execute(); ->limit(100)->execute( array(), Doctrine::HYDRATE_ARRAY ); ->limit(1000)->execute( array(), Doctrine::HYDRATE_ARRAY ); 2.93 seg 30.80 seg 0.20 seg 1.37 seg
40. Select, Joins e Indices Optimizando Doctrine SELECT c.id, c.name , c.resume, c.disclaimer, c.product , c.description, br />UNIX_TIMESTAMP(c.valid_start_at) as valid_start, UNIX_TIMESTAMP(c.valid_end_at) as valid_end, UNIX_TIMESTAMP(c.promotion_start_at) as promotion_start, UNIX_TIMESTAMP(c.promotion_end_at) as promotion_end, UNIX_TIMESTAMP(c.publish_at) as publish, br />c.tracking_click, c.tracking_save_count, c.visibility_status_id, c.print_coupon, c.mobile_coupon, c.online_coupon, c.company_id, cp.comercial_name as company_name, c.redemption_price as redemption_price, br />CONCAT_WS(',', GROUP_CONCAT(DISTINCT ca.attributes_id SEPARATOR ",") ) as attributes, br />CONCAT_WS(',', GROUP_CONCAT(DISTINCT ca.root_id SEPARATOR ",") ) as roots, br />CONCAT_WS(',', GROUP_CONCAT(DISTINCT ca.level SEPARATOR ",") ) as levels, br />CONCAT_WS(',', GROUP_CONCAT(DISTINCT cs.store_id SEPARATOR ",") ) as stores, br />CONCAT_WS(',', GROUP_CONCAT(DISTINCT uc.user_id SEPARATOR ",") ) as users, br />CONCAT_WS(',', GROUP_CONCAT(DISTINCT cs.state_id SEPARATOR ","), IF(online_coupon = 1, 0, null) ) as states, CONCAT_WS(',', IF( print_coupon = 1, 1,null), IF( mobile_coupon = 1, 2,null), IF( online_coupon = 1, 3,null) ) as types, br />CONCAT_WS(',', GROUP_CONCAT(DISTINCT cs.postal_code SEPARATOR ",") ) as postal_codes_ids, br />CONCAT_WS(' ', GROUP_CONCAT(DISTINCT cs.city_name SEPARATOR " ") ) as cities, br />CONCAT_WS(' ', GROUP_CONCAT(DISTINCT s.road_name SEPARATOR " ") ) as roads, br />CONCAT_WS(' ', GROUP_CONCAT(DISTINCT s.comercial_name SEPARATOR " ") ) as names, br />CONCAT_WS(' ', GROUP_CONCAT(DISTINCT s.postal_code SEPARATOR " ") ) as postal_codes, br />CONCAT_WS(' ', GROUP_CONCAT(DISTINCT sa.name SEPARATOR " ") ) as state_names br />FROM ( ( ( (coupons c LEFT JOIN coupon_attributes ca ON c.id = ca.coupons_id ) LEFT JOIN coupon_stores cs ON c.id = cs.coupon_id) LEFT JOIN sf_guard_user_coupons uc ON c.id = uc.coupon_id ) LEFT JOIN stores s ON cs.store_id = s.id ) LEFT JOIN states sa ON cs.state_id = sa.id LEFT JOIN companies cp ON cp.id=c.company_id br />WHERE ( c.administrative_status_id = 1 AND c.publish_at < NOW() AND DATE(c.valid_end_at) + INTERVAL 1439 HOUR_MINUTE > NOW() ) br />GROUP BY c.id
53. Cómomodificarla La Cache la cache de de vistas class sfViewCacheManager public function setPageCache($uri) public function getPageCache($uri)
54. Cómomodificarla La Cache la cache de de vistas class xyzCache extendssfCache abstract public function get ($key, $default = null); abstract public function has ($key); abstract public function set ($key, $data, $lifetime = null); abstract public function remove ($key); abstract public function removePattern($pattern); abstract public function clean ($mode = self::ALL);
----- Meeting Notes (02/07/11 00:31) -----COmo se que es un poco aburrido hablar de Sy1 pues les presento a Aotamao
----- Meeting Notes (02/07/11 00:21) -----Porque trabajamos con estoConocimiento comun de los problemas y posibles soluciones sobre el FWQuiero que sea una session corta
Quiero saber queconocimientos hay sobresymofny 1.xCuantassaben de 1.x Cuantas personas No SabeSy 1.xQuien no sabe nada de Symofny 1.x?Entoncesqueaprenda S2 sin problemas.Cuantos con Doctrine 1.2?Cuantoshantenidoproblemasparalanzar la web porque les vamuy lento?
----- Meeting Notes (02/07/11 00:31) -----mejorar el uso de los recursos durante el proceso de la web
----- Meeting Notes (02/07/11 00:34) -----1)2) Rasum Lerdorf3) Creo yo, no se
----- Meeting Notes (02/07/11 00:34) -----conferencia la hago por mi experiencia preview
----- Meeting Notes (02/07/11 00:40) ----- vamos a ver a que nos enfrentamos
----- Meeting Notes (02/07/11 00:40) -----Nos enfrentamos a mejorar estas cosas, son inaceptables sin cache
----- Meeting Notes (02/07/11 01:03) -----Que buscamos en la DBPara que vamos a la DBUtilizamos doctrine para describir esas busquedas con su DQL, mala idea
PHP Data ObjectsThe PHP Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP.PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data.ABSTRACTION !!!
Quedarse con esto en la mente, se puederecupearalasconeccionque no es mas queuna extension de PDO y usarseparallegar a la DB
Cuidado con los JoinsEstas queries esmejorcachearlassi no se van a podermejorar
Quien no sabe nada de Symofny 1.x?Entoncesqueaprenda S2 sin problemas.Cuantostienesquevolver el lunes a trabajar con sy 1.x?Cuantos con Doctrine 1.2?Cuantoshantenidoproblemasparalanzar la web porque les vamuy lento?
Cuestion de reducir los includes y revisarlasconsultasanidadas: Dondeaquipresento 2 ejemplos----- Meeting Notes (02/07/11 01:26) -----No PartialNo Lo Otro
Partial reconstruye el objetoPHPView Con nuevasvariablesPor favor no lo diganporahi
Añadir el join con la tablaEvenAssistantsPonerlímtes a la queryCrear Index para MySQLSeleccionar solo los camposnecesariosContar en otra query y usaruna variable nueva
La cache vino a salvarnos la vida, sin ellamuchas app no salen a producción, vamos a verquepodemoshacer con ella
Empecemosdesde el principio
Esmuchainformacion, solo saber que se puededefinir a nivelconexion y a nivel manager.
Quien no sabe nada de Symofny 1.x?Entoncesqueaprenda S2 sin problemas.Cuantostienesquevolver el lunes a trabajar con sy 1.x?Cuantos con Doctrine 1.2?Cuantoshantenidoproblemasparalanzar la web porque les vamuy lento?