[wordpress] How to break WP ( and how I did it )

By.

min read

My profile

Share this:

Ow yes ! It can be done 🙂

I recently found out that there is a serious performance and Mysql limit to WordPress. Ok I admit, the chances were there yet I did not expect it to happen that fast!

[b:109bf698ab]The setup:[/b:109bf698ab]
I wrote a plugin for www.basketleagues.com which reads XML info of basket matches, teams etcetera. Every team should have it’s own wordpress page.
So the plugin created this new page if that page did not exist yet.

My fault: The mechanism to check if a page existed had a bug, and pages with special chars were created over and over again.

You should know that this was an optimised server for WordPress/mysql etc..

[b:109bf698ab]This is what happened:[/b:109bf698ab]
* WordPress contained at one point in time about 2500 pages.
* Frontpage loads were extreme: from +- 180 to 2500 pages in about a second to over 1minute 40
* Adding a new page triggered a mysql error, we had reached the mysql max packet size
HUH? > Well apparently when adding a new page there is 1 option value in the options table which is updated. I am not sure what is does, but it adds all pages with link to (I guess) rss/feed purposes.
The single mysql query filled my screen so much my scrollbar was about 5 millimeters in height …

[b:109bf698ab]Explanation and how to prevent this:[/b:109bf698ab]
[url]http://ottopress.com/2010/category-in-permalinks-considered-harmful/[/url]
[url]http://www.wptavern.com/forum/troubleshooting/1470-permalink-problem.html#post14268[/url]

[b:109bf698ab]So … read on![/b:109bf698ab]
[url=http://wordpress.tv/2008/10/31/wordcamp-sf-2008-lorelle-vanfossen-260-ways-to-break-wordpress/]How to break wordpress by Lorelle Vanfossen[/url]
[url=http://www.ramonfincken.com/184/CMS-ses+joomlaC+wordpressC+etc../%5Bwordpress%5D%5Bsolution%5D+How+to+code+API+a+new+post+or+page+…html]How to code (API) a new post or page.[/url]

Share this:

Leave a Reply

Your email address will not be published. Required fields are marked *