Hi Oscar,<br><br>I&#39;m already working on an opensource framework, when I finish it&#39;s architectures I will send it to you, to see how I deal with performance issue.<br><br>Cheers,<br>&nbsp;&nbsp; Ahmad<br><br><div class="gmail_quote">
On Nov 9, 2007 4:51 PM, Oscar Renalias &lt;<a href="mailto:oscar@renalias.net">oscar@renalias.net</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Nov 9, 2007 3:00 PM, Ahmad Saleh &lt;<a href="mailto:ahmadfds@gmail.com">ahmadfds@gmail.com</a>&gt; wrote:<br>&gt; Hi guys,<br>&gt;<br>&gt; LifeType really is a great service, however, it&#39;s very slow, I like Lifetype
<br>&gt; and really I wish the best for it and for you guys.<br><br></div>We do what we can, but have you considered scaling your hardware up?<br>It sometimes helps. PHP, Apache and MySQL are quite good at scaling<br>upwards (more powerful servers) and horizontally (more servers)
<br><div><div></div><div class="Wj3C7c"><br>&gt; If you don&#39;t mind, I have some suggestions:<br>&gt; 1) about __autoload: I think it&#39;s a great idea, and it will increase<br>&gt; lifetype performance if you use it in a correct way, something like this:
<br>&gt;<br>&gt; &lt;?php<br>&gt; $importList = array();<br>&gt;<br>&gt; //This will not load class directly from classes path, just load it when you<br>&gt; need it<br>&gt; function import($classPath) {<br>&gt; &nbsp; &nbsp; global $importList;
<br>&gt; &nbsp; &nbsp; $classFullPath = APP_PATH.str_replace(&#39;.&#39;, &#39;/&#39;, $classPath);<br>&gt; &nbsp; &nbsp; $className = basename($classFullPath);<br>&gt; &nbsp; &nbsp; $importList[$className] = $classFullPath.&#39;.php&#39;;<br>&gt; &nbsp; &nbsp; if(!file_exists($importList[$className])) {
<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; throw new Exception(&#39;File Doesn\&#39;t Exists<br>&gt; [&#39;.$importList[$className].&#39;]&#39;);<br>&gt; &nbsp; &nbsp; }<br>&gt; }<br>&gt;<br>&gt; //Catch unloaded classes<br>&gt; function __autoload($className) {
<br>&gt; &nbsp; &nbsp; global $importList;<br>&gt;<br>&gt; &nbsp; &nbsp; if(isset($importList[$className])) {<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; include $importList[$className];<br>&gt; &nbsp; &nbsp; } else {<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throw new Exception(&quot;Invalid Class Name [$className]&quot;);
<br>&gt; &nbsp; &nbsp; }<br>&gt; &nbsp; &nbsp; return $className;<br>&gt; }<br>&gt; ?&gt;<br>&gt;<br>&gt; and about load a classes just use it like this<br>&gt; import(&#39;class.action.admin.AdminAddPostAction &#39;);<br>&gt;<br>&gt; and keep your class file name exactly like ClassName.
<br><br></div></div>I don&#39;t see how this can help, please elaborate.<br><br>The goal for implementing class autoloading was to remove all those<br>annoying lt_include() statements at the top of each one of our class<br>
files. If we replace this:<br><br>lt_include( PLOG_CLASS_PATH.&quot;class/action/whatever.class.php&quot; );<br><br>with your suggestion:<br><br>import( &quot;class.action.Whatever&quot; );<br><br>What did we gain here? If we&#39;re doing it to increase clarity and
<br>reduce code cruft, we gained nothing as we still one import()<br>statement per class. If we&#39;re doing it for performance purposes, we<br>might as well revert to lt_include() as it won&#39;t get any faster than<br>that.
<br><div class="Ih2E3d"><br>&gt; 2) using the cache: smarty cache is great, but I think it&#39;s used in a wrong<br>&gt; way,<br>&gt; in each request, you already load [local files] &nbsp;and plugins and ... , which<br>&gt; will not be used if the template is cached.
<br><br></div>There&#39;s some plugins that need to run regardless of the cached status<br>of the templates, such as those that register a filter in the<br>pipeline.<br><br>But there&#39;s already been some discussion about this topic recently and
<br>there&#39;s still time to tackle this issue in the next major release. Do<br>you happen to have a proposal on how to implement this?<br><div><div></div><div class="Wj3C7c"><br>&gt; 3) loading operations[controllers maps]: you can store this array elements
<br>&gt; in temp file and run a binary search on this array to get incoming operation<br>&gt; action.<br>&gt;<br>&gt; Regards,<br>&gt; &nbsp; &nbsp; Ahmad<br>&gt;<br>&gt;<br>&gt;<br>&gt; On Nov 9, 2007 1:47 PM, Mark Wu &lt;<a href="mailto:markplace@gmail.com">
markplace@gmail.com</a>&gt; wrote:<br>&gt; &gt; Actually, I saw that post several days ago .....<br>&gt; &gt;<br>&gt; &gt; I was frustrated when you try to use __autoload :( , it is really makes<br>&gt; the<br>&gt; &gt; LifeType so so slow in windows platform ...because it increse thousands
<br>&gt; &gt; file_exist() execution time.<br>&gt; &gt;<br>&gt; &gt; I think we should mix the PHP4 skill in PHP5 implementation at this<br>&gt; moment,<br>&gt; &gt; or it will cause our system to get very bad performance.
<br>&gt; &gt;<br>&gt; &gt; Actually, I really like __get, __set and __call in PHP5, we can use it to<br>&gt; &gt; redeuce the complexity of our dbobjects....<br>&gt; &gt;<br>&gt; &gt; For example, &nbsp;we can add a new property like $description without add new
<br>&gt; &gt; getter and setter method. And we still can use getDescription() method to<br>&gt; &gt; get property $description &nbsp;... that&#39;s magic function for ...<br>&gt; &gt;<br>&gt; &gt; But, you know, it slow ....<br>
&gt; &gt;<br>&gt; &gt; Mark<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; &gt; -----Original Message-----<br>&gt; &gt; &gt; From: <a href="mailto:plog-svn-bounces@devel.lifetype.net">plog-svn-bounces@devel.lifetype.net
</a><br>&gt; &gt; &gt; [mailto:<a href="mailto:plog-svn-bounces@devel.lifetype.net">plog-svn-bounces@devel.lifetype.net</a>] On Behalf Of<br>&gt; &gt; &gt; Oscar Renalias<br>&gt; &gt; &gt; Sent: Friday, November 09, 2007 7:35 PM
<br>&gt; &gt; &gt; To: LifeType Developer List<br>&gt; &gt; &gt; Subject: [pLog-svn] This is not fair<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; It doesn&#39;t help if PHP implements lots of nice OOP features<br>&gt; &gt; &gt; (that I was planning to use one day, such as Array iterators, &quot;magic&quot;
<br>&gt; &gt; &gt; accessors via __get and __set, and so on) if by using them we<br>&gt; &gt; &gt; incur in some pretty annoyingly high performance overheads... See for<br>&gt; &gt; &gt; yourselves:<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; 
<a href="http://www.garfieldtech.com/blog/magic-benchmarks" target="_blank">http://www.garfieldtech.com/blog/magic-benchmarks</a><br>&gt; &gt; &gt;<br>&gt; &gt; &gt; I just wanted to vent my frustrations about this topic with you... :)
<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; Oscar<br>&gt; &gt; &gt; _______________________________________________<br>&gt; &gt; &gt; pLog-svn mailing list<br>&gt; &gt; &gt; <a href="mailto:pLog-svn@devel.lifetype.net">pLog-svn@devel.lifetype.net
</a><br>&gt; &gt; &gt; <a href="http://limedaley.com/mailman/listinfo/plog-svn" target="_blank">http://limedaley.com/mailman/listinfo/plog-svn</a><br>&gt; &gt;<br>&gt; &gt; _______________________________________________<br>
&gt; &gt; pLog-svn mailing list<br>&gt; &gt; <a href="mailto:pLog-svn@devel.lifetype.net">pLog-svn@devel.lifetype.net</a><br>&gt; &gt; <a href="http://limedaley.com/mailman/listinfo/plog-svn" target="_blank">http://limedaley.com/mailman/listinfo/plog-svn
</a><br>&gt; &gt;<br>&gt;<br>&gt;<br>&gt; _______________________________________________<br>&gt; pLog-svn mailing list<br>&gt; <a href="mailto:pLog-svn@devel.lifetype.net">pLog-svn@devel.lifetype.net</a><br>&gt; <a href="http://limedaley.com/mailman/listinfo/plog-svn" target="_blank">
http://limedaley.com/mailman/listinfo/plog-svn</a><br>&gt;<br>_______________________________________________<br>pLog-svn mailing list<br><a href="mailto:pLog-svn@devel.lifetype.net">pLog-svn@devel.lifetype.net</a><br><a href="http://limedaley.com/mailman/listinfo/plog-svn" target="_blank">
http://limedaley.com/mailman/listinfo/plog-svn</a><br></div></div></blockquote></div><br>