WordPress-Patch: Veröffentlichung von Beiträgen dauert sehr lange
Manchmal hat auch es auch sein Gutes, daß Owen Winkler die Hoheit über das WordPress-Dashboard erlangt hat. Sein Blog Asymptomatic ist ohnehin lesenswert und nun beschäftigte er sich mit der Problematik, daß WordPress 2.0.1 beim Veröffentlichen von Postings ewig lange, manchmal unendlich lange braucht. Er macht den Ping-Service Pingomatic dafür verwantwortlich, denn dieser RPC-Dienst ist bei den meisten WordPress-Installationen standardmäßig voreingestellt und bei der ständig wachsenden Zahl an WordPress-Usern stark beansprucht. Das zeigt auch die Statistik unter grabperf.org. Pingomatic ist quasi rund um die Uhr voll ausgelastet. Owen begründet damit die lange Wartezeit bis zur Veröffentlichung eines Beitrages und empfiehlt deshalb, einen besser erreichbaren Service zu nutzen. Ein kurzer Test mit einem der genannten Dienste scheint diese Theorie zu bestätigen.
Es ist jedoch auch eine andere Lösung möglich, denn seit dem 13.02. liegt im WordPress Trac ein Patch zur Lösung des Problems vor. Da eine installierbare Version dieses Patches erst mit Milestone 2.1 zu erwarten ist, hier nun eine kurze Anleitung, wie er mit einem manuellen Eingriff durchgeführt werden kann. Vorher bitte in jedem Fall ein Backup der zu modifizierenden Datein anlegen (am besten durch umbenennen auf dem Server).
1. Modifikation der Datei /wp-includes/default-filters.php. Die Zeile Nr. 85
add_action('publish_post', 'generic_ping');
ist ersatzlos zu löschen.
2. Modifikation der Datei /wp-admin/execute-pings.php. In Zeile Nr. 25 ist folgendes einzufügen:
generic_ping();
Das Problem lag also darin, daß die Auslösung des Pings explizit mit der »Publish-Post«-Aktion verbunden war, so daß die Rückkehr zum Admin-Panel erst möglich war, wenn der Ping vorgenommen wurde (default-filters.php). Das Pingen an sich, wurde nun in die separate Datei execute_pings.php ausgelagert, mit der Folge, daß der Ping unabhängig von der Veröffentlichung des Beitrages ist und diese wieder mit »normaler Geschwindigkeit« erfolgt. Für ganz Faule hier die beiden korrigierten Dateien zum Download:
Patch: Publish takes long time (some say forever)
Download: changeset-3524.zip (1.271 Bytes)
Das ganze natürlich ohne jegliche Gewähr auf Funktionstüchtigkeit, in der Praxis funktioniert es bei mir aber zur vollsten Zufriedenheit. (Noch mal: vorher Backup der beiden Dateien anlegen).
Hinweis: Auf Grund eines Kommentares von Owen noch mal zur Klarstellung: Der Ping selbst wird durch die Modifikation im Hintergrund ausgeführt. Dadurch erhält man aber im Zweifelsfall keine Rückmeldung, ob Pingomatic tatsächlich erreicht und der Ping erfolgreich durchgeführt wurde.
Artikel: WordPress-Patch: Veröffentlichung von Beiträgen dauert sehr lange
Datum: Wednesday, 15. February 2006, 11:26 Uhr
Kategorien: WordPress
Feed zum Beitrag: RSS 2.0 · Trackback: Trackback-URL
Diesen Artikel kommentieren.
Journal (Artikel)
15. February 2006
@ 12:52
I should note that using this patch doesn’t speed up the actual pinging, but makes the pinging take place in the background so that it seems to work faster. If Pingomatic fails, you’ll never know.
15. February 2006
@ 13:21
Thanks Owen, I will add that information to the post.
15. February 2006
@ 14:30
danke, hab einfach pingomatic gelöscht.
15. February 2006
@ 16:16
Danke für den Tipp. Dieses Verhalten von WP hat mich schon fast in den Wahnsinn getrieben.
15. February 2006
@ 20:30
[...] Wen es in letzer Zeit ziemlicht angenervt hat, dass Wordpress beim Posten eines neues Beitrages so lange zum Reagieren braucht, erhält nun gute Nachricht: Owen Winkler hat sich in seinem Blog zu dem Thema geäußert und einen Workaround angeboten. Wer eine gute Übersetzung und eine kurze deutsche Erklärung zu der Problematik lesen will, dem lege ich wärmstens das Posting auf jowra.de nahe. Ich habe es ausprobiert und es klappt einwandfrei Wordpress Patch Manuel schrieb abends am 15. Februar 2006 | in blogging [...]
15. February 2006
@ 21:27
[...] Nun, mal sehen wie fix es jetzt mit dem von ihm hier gefundenen Patch geht. Damit wird Ping-o-matic zwar nicht sofort gepingt, aber wen stört das schön, wenn das irgendwann später passiert. Bis jetzt habe ich sowieso noch nie einen Besucher von den angepingten Verzeichnissen kommen sehen. In den Millionen von neuen Artikeln pro Sekunde gehen meine kleinen wohl ein wenig unter … genauso wie jeder andere [...]
18. February 2006
@ 01:40
[...] Jowra berichtet von einer programmatischen Lösung, um die 30 Sekunden Wartezeit zu vermeiden: mittels einem seit 13.02. im WordPress Trac veröffentlichten WordPress-Patch kann der Ping im Hintergrund ausgeführt werden, allerdings erhält man dadurch aber keinen Hinweis, wenn der Ping nicht erfolgreich ausgeführt wurde. [...]
24. February 2006
@ 00:32
Erstmal Wordpress getuned
Der Wordpress-Patch von jowra.de beschleunigt das Abspeichern.
...
25. February 2006
@ 00:38
Der Wordpress-Patch funktioniert einwandfrei, danke an jowra.de für die bereitgestellte Zip-Datei mit den bereinigten PHP-Dateien.
28. February 2006
@ 12:21
[...] (ebenfalls via jowra.de, auch dafür vielen Dank :)) [...]
3. March 2006
@ 20:47
[...] Im Blog von Jowra.de habe ich ein Tunning-Tip für Wordpress gefunden. Es lohnt sich den einzubinden und hilft dabei schneller abzuspeichern. Die Beschreibung und die files die es zu ersetzen gibt werden dort gleich mitgeliefert. [link] [...]
18. March 2006
@ 18:25
[...] Wer beim publizieren von Beiträgen in Wordpress 2.01 ebenfalls von Timeouts und folgender Fehlermeldung geplagt ist, der möge hier vorbeischauen und das Problem lösen. [...]
8. May 2006
@ 16:25
Ha! Fantastisch! Danke! :-)
19. May 2006
@ 14:37
[...] Manchmal dauert das ja wirklich unerträglich lange und da hab ich auf der Seite von John Wrana eine Erklärung des Problems und Lösung gefunden. [...]
17. July 2006
@ 19:45
Besser spät als nie: Bin soeben fast verzweifelt, weil die Veröffentlichung so lange “hing”, dass es zu einem Timeout-Problem mit dem Server meines Providers kam. Dank der Suche im Wordpress.de-Forum und Deinem Tipp hier ist der Fehler ja nun gefunden :).
30. August 2006
@ 12:37
[...] noch keine kommentare zu’lost connection’ RSS feed fuer kommentare und trackback URI fuer ‘lost connection’ [...]
22. October 2006
@ 01:46
Echt super der Tip, erspart mir aufjedenfall sehr viel Zeit!! Danke!