<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>PHPDeveloper.org</title>
    <link>http://www.phpdeveloper.org</link>
    <description>Up-to-the Minute PHP News, views and community</description>
    <language>en-us</language>
    <pubDate>Wed, 23 May 2012 20:25:30 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Derick Rethans' Blog: Xdebug's Code Coverage speedup]]></title>
      <guid>http://www.phpdeveloper.org/news/16898</guid>
      <link>http://www.phpdeveloper.org/news/16898</link>
      <description><![CDATA[<p>
<i>Derick Rethans</i> has a new post to his blog today talking about some work that's been done to <a href="http://derickrethans.nl/xdebug-codecoverage-speedup.html">speed up XDebug's code coverage generation</a>. Changes in the coming 2.2 release have some improvements that make things perform better and put less stress on PHP in the process.
</p>
<blockquote>
Code coverage tells you how much of your code base is actually being tested by your unit tests. It's a very useful feature, but sadly, it slows down PHP's execution quite a lot. One part of this slowdown is the overhead to record the information internally, but another part is because I have to overload lots of opcodes. (Opcodes are PHP's internal execution units, similar to <a href="http://en.wikipedia.org/wiki/Assembler_%28computer_programming%29#Assembly_language">assembler</a> instructions) They are always overloaded even if code coverage is not used, because it's only safe to overload them for the whole request.
</blockquote>
<p>
These changes were from a combination of <a href="https://github.com/taavi/xdebug/commits/coverage_line_array">contributions from Taavi Burns</a> and a new ini setting that will allow you to enable or disable the code coverage in XDebug. Benchmarking shows a good amount of time reduction in coverage runs - dropping anywhere from a few seconds to over a minute. He also mentions the idea of "modes", shortcuts to predefined settings for different types of reporting (like "profiling" or "tracing").
</p>]]></description>
      <pubDate>Fri, 23 Sep 2011 09:56:33 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Brian Swan's Blog: Performance Tuning PHP Apps on Windows with Wincache]]></title>
      <guid>http://www.phpdeveloper.org/news/16574</guid>
      <link>http://www.phpdeveloper.org/news/16574</link>
      <description><![CDATA[<p>
<i>Brian Swan</i> has a new post to his blog sharing some tips you can use to get the best performance out of your Windows applications <a href="http://blogs.msdn.com/b/brian_swan/archive/2011/07/08/performance-tuning-php-apps-on-windows-with-wincache.aspx">by tuning Wincache</a>.
</p>
<blockquote>
A few weeks ago I wrote a post that showed how to improve the performance of PHP applications on Windows by using the IIS output caching module. Using the output caching module can have significant positive impact on application performance since pages are served from cache without executing any PHP code. However, this very strength can also be a drawback depending on how your application is built. Because entire pages are cached, using output caching may not be ideal for pages that have multiple data sources.
</blockquote>
<p>
He points to the <a href="http://pecl.php.net/package/WinCache">Wincache extension</a> as an alternative to the full-page caching with it's built-in opcode caching (you get for "free" just by installing). He mentions this and a few other features that come with it like the ability to cache to a file and to normalize file paths for more efficient seeking of files. He also focuses on partial caching with a specific example of caching user data for use through out the application. A bit of code and some screenshots are included to show the performance boost this can give.
</p>]]></description>
      <pubDate>Mon, 11 Jul 2011 10:04:45 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Zend Developer Zone: Using APC with PHP]]></title>
      <guid>http://www.phpdeveloper.org/news/15369</guid>
      <link>http://www.phpdeveloper.org/news/15369</link>
      <description><![CDATA[<p>
The Zend Developer Zone has published a new in-depth tutorial from <i>Vikram Vaswani</i> about <a href="http://devzone.zend.com/article/12618-Using-APC-with-PHP">using APC and PHP</a> to get the best performance out of your application. Using this opcode caching tool can greatly speed up the execution of your site with almost no effort on your part.
</p>
<blockquote>
dding APC to an application usually results in improved application response times, reduced server load and happier users. In this article, I'll introduce you to APC, guiding you through the process of installing and configuring it and showing you a few examples of how it works. I'll also walk you through the APC administrator interface, which lets you view APC performance in real time, and show you how you can use it with the Zend Framework
</blockquote>
<p>
He shows you every step of the way - installation, configuration (complete with some screenshots) and the web-based interface you can enable to see the statistics about how the cache's performance is and what requests it's been handling. He mentions other abilities APC has like array and object caching, caching closures and finally a real-world example of using it to cache the results of a Twitter search request (in a Zend Framework environment).
</p>]]></description>
      <pubDate>Tue, 02 Nov 2010 11:51:44 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Arun Gandhi's Blog: 15 methods to speed up PHP based website's performance]]></title>
      <guid>http://www.phpdeveloper.org/news/14702</guid>
      <link>http://www.phpdeveloper.org/news/14702</link>
      <description><![CDATA[<p>
On his blog today <i>Arun Gandhi</i> has posted <a href="http://greatgandhi.wordpress.com/2010/02/04/15-methods-to-boost-your-php-based-website%E2%80%99s-performance/">an "all in one place" list</a> of technology that you can use to help speed up your site overall without too much effort on your part.
</p>
<blockquote>
PHP is great for writing quick dynamic stuff for your website. Just a couple of lines of code can be written in 2 mins to insert or retrieve data from db. But with ease there is also some pain… the downside is that each request for a dynamic page can trigger multiple db queries, processing of output, and finally formatting to display on browser. This process can eventually be slow on larger sites or slower servers. 
</blockquote>
<p>
There's lots of options here for all different levels of the code - opcode caching to speed up repetitive operations, data caching at the PHP layer, caching plugins and template caching.
</p>]]></description>
      <pubDate>Fri, 25 Jun 2010 09:31:27 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Derick Rethans' Blog: More source analysis with VLD]]></title>
      <guid>http://www.phpdeveloper.org/news/14075</guid>
      <link>http://www.phpdeveloper.org/news/14075</link>
      <description><![CDATA[<p>
<i>Derick Rethans</i> has been working on some updates to a tool he's developed, <a href="http://derickrethans.nl/projects.html#vld">VLD</a>, to make it more helpful and effecting in optimizing the opcodes in your scripts and find the dead opcodes and paths. He talks about these updates in <a href="http://derickrethans.nl/more-source-analysis-with-vld.html">this recent post</a>.
</p>
<blockquote>
Recently I've been working on some new functionality to visualise all the code paths that make up each function. These new routines sit on top of the routines that do dead code analysis. These new routines sit on top of the routines that do dead code analysis. Every branch instruction (such as if, but also for and foreach) is analysed and a list of branches is created. [...] Once all the branches and their links are found, another algorithm runs to figure out which paths can be created out of all the branches.
</blockquote>
<p>
He illustrates with a few examples, showing both the command that was executed and the resulting output with the new path information of a simple test file using a "for" loop and an "if/else" conditional.
</p>]]></description>
      <pubDate>Tue, 23 Feb 2010 10:49:26 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Christian Flickinger's Blog: WinCache, Apache and a pretty graph!]]></title>
      <guid>http://www.phpdeveloper.org/news/14019</guid>
      <link>http://www.phpdeveloper.org/news/14019</link>
      <description><![CDATA[<p>
<i>Christian Flickinger</i> has written up a new blog post today showing <a href="http://www.nexdot.net/blog/2010/02/09/wincache-apache-and-a-pretty-graph/">some of the benchmarks</a> he's worked up around the performance of various caching tools with the <a href="http://www.iis.net/expand/wincacheforphp">WinCache</a> caching tool from Microsoft coming out as a leader.
</p>
<blockquote>
The [WinCache] documentation makes no mention of Apache, only IIS. I decided to give it a try, and to my amazement, WinCache worked in Apache on Windows. After that I decided to compare the performance of WinCache with the other available options for Windows+Apache.
</blockquote>
<p>
He defines his testing environment - hardware, software and the different opcode caching tools - and includes his testing technique. His <a href="http://www.nexdot.net/blog/wp-content/uploads/2010/02/opcode-cacher-graph.jpg">results</a>, measured in requests per second, are interesting but show that, for his configuration, the WinCache tool's performance topped the others on Windows.
</p>]]></description>
      <pubDate>Fri, 12 Feb 2010 13:36:47 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[IBuildings Blog: PHP Caching on Windows: A managers perspective]]></title>
      <guid>http://www.phpdeveloper.org/news/13598</guid>
      <link>http://www.phpdeveloper.org/news/13598</link>
      <description><![CDATA[<p>
On the IBuildings blog <i>Cal Evans</i> has <a href="http://www.ibuildings.co.uk/blog/archives/1577-PHP-Caching-on-Windows-A-managers-perspective.html">taken a look</a> at the Windows caching technology (some <a href="http://blogs.iis.net/mailant/archive/2009/11/19/windows-cache-extension-for-php-aka-wincache-1-0-general-availability-today.aspx">recently released</a>) from a management perspective and where it fits in the overall Windows caching toolsets available.
</p>
<blockquote>
As PHP extends its reach further into corporate networks, IT managers have yet another technology that they have to understand so that they can properly deploy. In many situations, PHP code is being developed that - running on its own - creates a bad user experience because of the nature of the language. [...] Much of this delay, and the user unhappiness that always accompanies it, can be mitigated with the proper opcode caching solution. The list in this article was compiled to help managers understand what their options they have. These are the most popular or recent PHP opcode caching solutions.
</blockquote>
<p>
He lists three of the more popular choices - the Alternative PHP Cachie, Zend Optimizer+ and the WinCache - touching briefly on what each has to offer.
</p>]]></description>
      <pubDate>Sun, 29 Nov 2009 09:50:42 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Abhinav Singh's Blog: PHP tokens & opcodes: 3 useful extensions for understanding the Zend Engine]]></title>
      <guid>http://www.phpdeveloper.org/news/13584</guid>
      <link>http://www.phpdeveloper.org/news/13584</link>
      <description><![CDATA[<p>
<i>Abhinav Singh</i> has <a href="http://abhinavsingh.com/blog/2009/11/php-tokens-and-opcodes-3-useful-extensions-for-understanding-the-working-of-zend-engine/">a recent post</a> to his blog looking at three extensions that you can use to help understand the inner workings of the core Zend Engine.
</p>
<blockquote>
"PHP tokens and opcodes" - When a PHP script is executed it goes through a number of processes, before the final result is displayed. These processes are namely: Lexing, Parsing, Compiling and Executing. In this blog post, I will walk you through all these processes with a sample example. In the end I will list some useful PHP extensions, which can be used to analyze results of every intermediate process.
</blockquote>
<p>
He touches on the steps the average PHP script takes in its processing - lexing, parsing/compiling and the actual execution of the opcodes. The <a href="http://www.php.net/manual/en/ref.tokenizer.php">tokenizer</a>, <a href="http://www.php.net/manual/en/ref.parsekit.php">parsekit</a> and <a href="http://derickrethans.nl/vld.php">VLD</a> (Vulcan Logic Disassembler) extensions can help you get down into the nuts and bolts of the language and the engine that makes it work.
</p>]]></description>
      <pubDate>Tue, 24 Nov 2009 11:32:31 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Derick Rethans' Blog: PHP's two-pass compiler]]></title>
      <guid>http://www.phpdeveloper.org/news/11833</guid>
      <link>http://www.phpdeveloper.org/news/11833</link>
      <description><![CDATA[<p>
While working on an issue with debugging a script of his via XDebug, <i>Derick Rethans</i> was <a href="http://derickrethans.nl/phps_twopass_compiler.php">reminded of something</a> that is an integral part of the PHP language - its two phase compiler.
</p>
<blockquote>
During the first pass, it will find out to which opcode it needs to jump in the jump instructions. However, the PHP engine (and Xdebug) expects a memory address to jump to while executing your script. In the second pass, the compiler will then go over the generated opcodes and calculate the memory address to jump to from the jumps to opcode numbers. 
</blockquote>
<p>
Because of the way that XDebug was handling the checks (with the user-defined error handler) and how the opcodes inside of PHP are handled, the user-defined handler happened in between the first and second phases and the latter run couldn't find the resources it was looking for, thus the crash.
</p>]]></description>
      <pubDate>Wed, 28 Jan 2009 12:06:34 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Zoe Slattery's Blog: PHP Opcodes]]></title>
      <guid>http://www.phpdeveloper.org/news/10965</guid>
      <link>http://www.phpdeveloper.org/news/10965</link>
      <description><![CDATA[<p>
In a <a href="http://zoomsplatter.blogspot.com/2008/08/php-opcodes.html">recent blog post</a> <i>Zoe Slattery</i> took a look at opcodes in PHP, specifically related to performance increases.
</p>
<blockquote>
After one particularly frustrating day [looking at how the Zend engine works] I asked a colleague (Andy Wharmby) about the issue I was looking at. Then a miracle happened - he'd not only looked at it but had documented it (and many other things) in a set of charts.
</blockquote>
<p>
She has linked to <a href="http://www.zapt.info/PHPOpcodes_Sep2008.odp">the charts</a> (Open Office format) for the results of some tests her friend had already run. They're a bit out of date and some parts might be inaccurate, but they're still a good start.
</p>]]></description>
      <pubDate>Thu, 04 Sep 2008 13:46:42 -0500</pubDate>
    </item>
  </channel>
</rss>

