Lösche Optionen aus allen Blogs bei der Plugin-Deinstallation von einem Netzwerk / einer Multisite

Codex sagt über das Löschen von Optionen auf deinstallieren

// Hinweis in Multi-Site-Schleife durch Blogs, um Optionen auf jedem Blog zu löschen skaliert nicht. Sie müssen sie einfach verlassen.

Ich bin nicht sehr hoffnungsvoll, aber gibt es eine etablierte skalierbare Möglichkeit, das zu tun? Theoretisch kann man ein Plug-In für das Deinstallations-Dienstprogramm haben, aber ich habe nie von jemandem gehört, der das wirklich macht, also ist es nur eine schlechte Idee, oder ist es nur ein Fall von niemandem, der sich wirklich genug um den Müll in der database kümmert?

Solutions Collecting From Web of "Lösche Optionen aus allen Blogs bei der Plugin-Deinstallation von einem Netzwerk / einer Multisite"

Weil es ein Wiki ist, ist der Codex eine notorisch unzuverlässige Informationsquelle (aber das wussten Sie wahrscheinlich schon). Es ist jedoch wahrscheinlich richtig, dass die Deinstallation in großen Netzwerken nicht skalierbar ist.

Was ich in einem meiner Plugins mache, ist die Deinstallationsroutine des Plugins auf allen Sites, es sei denn, wp_is_large_network() ist wahr. In einem großen Netzwerk geht das Plugin davon aus, dass es die Deinstallation nicht korrekt ausführen kann und versucht es nicht.

Eine andere Sache, die ich mache, ist, dass das Plugin verfolgt, auf welchen Sites es installiert ist (wenn es nicht im Netzwerk aktiv ist). Auf diese Weise wird es auf jeder dieser Seiten deinstalliert, unabhängig von der Größe des Netzwerks. Wenn es im Netzwerk also 20000 Seiten gibt, aber das Plugin nur auf 3 installiert wurde, wird es sich von diesen 3 Seiten deinstallieren.

Ich denke, es ist auch wichtig, daran zu denken, dass Leute, die riesige Netzwerke führen, die ganze Zeit damit zu tun haben (jedes Mal wenn sie WordPress aktualisieren). Sie verstehen, dass install / update / uninstall in den meisten Fällen nicht skalierbar ist, daher müssen sie ihre eigenen Skripte sowieso oft schreiben.

Also konzentriere ich mich in meinen Plugins im Grunde darauf, die grundlegende Deinstallationsroutine bereitzustellen, sie auszuführen, wenn sie skalieren sollte, und den Admins einen Hinweis zu zeigen, wenn dieser wahrscheinlich nicht skaliert wird und das Plugin es nicht selbst versucht.

Update (2015-03-16): Ich erinnere mich gerade daran, dass es ein Trac-Ticket zu dieser Diskussion gibt: # 14170 , insbesondere aus diesem Kommentar, ist sehr informativ, warum entschieden wurde, dass der Core selbst keine API bereitstellen würde Dies. Das Ticket enthält auch einige gute Tipps zur Optimierung für mehrere Standorte :

Der Grund, warum ich im core dagegen bin, zeigt sich genau an Ihrem Plugin. Wenn du hindurchschaust, erschaffst du eine Menge Tische. Sie erstellen sechs Tabellen pro Blog . Das kann in keiner vernünftigen Weise skalieren.

Kein Netzwerkadministrator würde das auf seiner Website zulassen, da viele andere Plugins mit weitaus weniger Footprint zur Verfügung standen. Ich bin müde von Plugins mit einer offiziellen API, um solche Dinge zu tun. Wenn jemand Ihr Plug-In in seinem Netzwerk haben möchte, wird er versuchen, all das zu deaktivieren, damit er diese Tabellen selbst erzeugen kann. (Es dauerte etwa zwei Wochen, um Commentmeta-Tabellen für jede Website auf WordPress.com zu generieren.)

Randnotiz – Viele davon sind Nachschlagetabellen und sollten wahrscheinlich globale Tabellen sein. Diejenigen, die nicht sind, können Post-Typen sein. Dann müssen Sie das überhaupt nicht tun.