Schlagwort-Archiv: ressourcen

Ressourcen Sparen bei Ajax Calls in WordPress

Bei meiner arbeit am Plugin BackWPup habe ich nach einer Möglichkeit gesucht Ressourcen zu sparen bei Ajax Calls und bei der Auftrags Ausführung. Die einzeige große Einsparung die ich bisher gefunden habe ist es die Übersetzungen anderer Plugins nicht mit zu laden das die enorm viel Speicher verbrauchen. Dies bringt in meiner test Installation mit 20 Plugins eine Einsparung von 31 MB auf 25,5 MB Script speicher. Da die Dateien auch nicht geöffnet werden wird das auch noch eine Einsparung bringen die ich im Moment nicht beziffern kann.

Hier die Umsetzung:
Wichtig ist hierbei das ich nur die Übersetzungen nicht lade wenn es sich um Calls meines Plugins handelt.

define('PLUGIN_MENU_PAGES', 'page1,page2');
if (defined('DOING_AJAX') and DOING_AJAX and in_array($_POST['backwpupajaxpage'],explode(',',PLUGIN_MENU_PAGES)))
add_filter('override_load_textdomain', create_function('$default, $domain, $mofile','if ($domain=="textdomain") return $default; else return true;'),1,3);

Zusätzlich musste ich noch einbauen das mein Plugin als erstes geladen wird:

define('PLGUNINNAME_PLUGIN_BASENAME',plugin_basename(__FILE__));

public function pluginname_first_plugin($newvalue, $oldvalue) {
if (!is_array($newvalue))
return $newvalue;
for ($i=0; $i<count ($newvalue);$i++) {
if ($newvalue[$i]==PLGUNINNAME_PLUGIN_BASENAME)
unset($newvalue[$i]);
}
array_unshift($newvalue,PLGUNINNAME_PLUGIN_BASENAME);
return $newvalue;
}
add_filter('pre_update_option_active_plugins', 'pluginname_first_plugin',1,2);

Vielleicht kennt ja noch jemand eine Lösung die Ressourcen weiter zu optimieren und die WordPress eigene Ajax Behandlung zu nutzen...

Update:
mit einer etwas geänderten Funktion ist es nicht mehr notwendig das Plugin nach vorne zu schieben ;)

define('PLUGIN_MENU_PAGES', 'page1,page2');
function overide_textdomain($default, $domain, $mofile) {
if ( (defined( 'DOING_CRON' ) && DOING_CRON) && in_array($_POST['backwpupajaxpage'],explode(',',PLUGIN_MENU_PAGES))) {
global $l10n;
if ($domain=='owntextdomainname') {
foreach (array_keys($l10n) as $domainkey)
unset($l10n[$domainkey]);
} else {
return true;
}
}
return $default;
}
add_filter('override_load_textdomain','overide_textdomain');

Update: Ich glaub das best ist es wenn in WordPress der WP-Performance-Gettext-Patch integriert wird. Nach meinen Tests bring das am meisten. Der Speicher verbrauch geht dann auf ca 17MB runter.