11. 2009. 10. 29. Nem átgondolt működés $res_uid = db_query(„SELECT DISTINCT(uid) FROM {files}”); while ($uid = db_result($res_uid)) { $res_name = db_query(„SELECT name FROM {users} WHERE uid = %d”, $uid); while ($name = db_result($res_name)) { ... } } $res_uid = db_query(„SELECT DISTINCT(uid) FROM {files}”); while ($uids[] = db_result($res_uid)) { } $uid_list = implode(„,”, $uids); $res_name = db_query(„SELECT name FROM {users} WHERE uid IN (%s)”, $uid_list); while ($name = db_result($res_name)) { ... } VS
77. 2009. 10. 29. Tervezni, tervezni, tervezni! <?php function custom_sokatszamol_blokk() { $cache = cache_get('sajat:sokatszamol:'. $GLOBALS['user']->uid); if (!$cache) { // A sokat számoló függvényünk eredménye nincs a cache-ben $o = custom_sokatszamol(); // Meddig legyen biztosan gyorsítótárazva (*nix időbélyeg) $lejar = time() + (60 * 60); // óra cache_set('custom:sokatszamol', $o, 'cache', $lejar); } else { $o = $cache->data; } return $o; } ?> Fokozottan fontos a saját gyorstáraink elévülésének Végiggondolása. Ha egy node, álnév, beállítás stb. megváltozik, végig kell gondolni, hogy a cache-ben mely elemeket érinti! cache_clear_all('custom:sokatszamol:', 'cache', TRUE);
78.
79. Redis – aka Memcached Killer félig állandó adatbázis (sorszintű írás a fájlrendszerre => kevés IO erőforrás. Pipelinening, összetett érték mezők. 2009. 10. 29.