[pLog-svn] A terrible truth about plugin

Oscar Renalias oscar at renalias.net
Tue Feb 5 14:35:36 EST 2008


> 1. About the  array_merge(), I just check the result again.... I  
> think it is slow becasue the include(), not array_merge. In my test  
> case, I need to load extra 14 locale files... So, there is nothing  
> we can do with it...  :(

I can't think of a single case where a user might need 14 plugins at  
the same time... I'm not sure how much we should optimize for those  
cases.

And in the case of big sites, perhaps we should write some  
instructions about how to merge plugin locales into the main one? We  
should obviously mention that this will make it more difficult to  
upgrade the plugin, but that it also has a performance advantage.

>
> Maybe ask user or develer merge thier plugin locale into the core  
> and reduce the file I/O access in thier production server.
>
> 2. Do you have any ideas about the menu structure? Maybe I can try  
> to implement it...

One good way to do it is by doing a print_r of the entire XML_Tree  
object once it's loaded the menu. Amongst many other things, you  
should get an array representing the XML file, including all possible  
attributes.

What I have in mind is something like this:

$admin["menu"] = Array(
	"url" => "?op=...",
	"localeId" => "...",
	"andPerms" => "...",
	"orPerms" => "..",
	"childs" => Array(
		"Manage" => Array(
			"url" => "...",
			"andPerms" => "...",
			...
		),
		...
	)
);

I hope you get the idea :)

Of course it's going to be a cumbersome task to conver the current  
menu.xml into this but hopefully we can automate it somehow.

Then at the API level and in order to minimize impact to the plugins,  
we should aim to keep the current interfaces while hopefully speeding  
up the process. So basically adding  a new menu under "/menu/Manage"  
would just mean something like isset($admin["menu"]["Manage"]) and  
then adding a new Array with all those "url", "localeId", "andPerms",  
etc.

How would this sound?

>
> 3. About the admin page cache, any ideas?

No. But I do know that it's going to be quite painful to add call to  
resetBlogCache() to all admin classes... It took us a few versions to  
get it right just for the public side, I can't even think how long  
it's going to take to get it right for the admin side.

>
> Mark
>
> From: plog-svn-bounces at devel.lifetype.net [mailto:plog-svn-bounces at devel.lifetype.net 
> ] On Behalf Of Oscar Renalias
> Sent: Saturday, February 02, 2008 5:32 PM
> To: LifeType Developer List
> Subject: Re: [pLog-svn] A terrible truth about plugin
>
> I had already been considering to replace menu.xml with something  
> else, probably with a native array (so that we can store all the  
> different attributes that are stored in the menu file) and then  
> while keeping the API interface, replace the code inside. But I  
> obviously have not had the time...
>
> I would drop the XML and consider a multidimensional array.
>
> About the locales, what's the performance penalty of using  
> array_merge? Is array_merge the slow part or is it something else?
>
> On Feb 1, 2008, at 8:20 PM, Mark Wu wrote:
>
>> After several testing, I think I know why our plugin is so slow...
>>
>> The problem is plugin menu & locales :(
>>
>> In our plugin framework, we can add menu on the fly, it is good.  
>> But it use XML_Tree(from pear), and it always lookup the specific  
>> node and add the plugin menu as its child in each request. So, if  
>> we have 1 plugin, and 2 menu entries, it will search the menu tree  
>> twice. If we have 14 plugins and each plugin has 2 menu entries, it  
>> will search 28 times ....
>>
>> The second problem is our plugin locales. Iit use array_merge() to  
>> merge the plugin locales into core locales....
>>
>> For 1st problem, I have no idea how to solve it, maybe we can  
>> change it to simplexml (native xml support) in php5 to see it  
>> increse any performance or not.
>>
>> For 2nd problem, maybe we can use include() only,
>>
>> For production server, I think add all menu to menu.xml and all  
>> locales to core locale file is very helpful......
>>
>> ====
>>
>> Here is the test result when I open editArticleCategories page: (I  
>> test it under  php5, apache 2.2 & mysql5 on a slow pentium M 1.8GHZ  
>> with 2G ram with window xp)
>>
>> 1. LifeType core + 14 plugins (8 with xml menu entries setting) :  
>> 1000 ms
>> 2. (1) and remove all locale files : 900ms
>> 3. (1) and remove all plugins: 550ms
>>
>> Just for your reference.
>>
>> Mark
>>
>>
>>
>> _______________________________________________
>> pLog-svn mailing list
>> pLog-svn at devel.lifetype.net
>> http://limedaley.com/mailman/listinfo/plog-svn
>
> _______________________________________________
> pLog-svn mailing list
> pLog-svn at devel.lifetype.net
> http://limedaley.com/mailman/listinfo/plog-svn

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://limedaley.com/pipermail/plog-svn/attachments/20080205/81a56ca4/attachment.htm 


More information about the pLog-svn mailing list