<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>euperia.com</title>
	<atom:link href="http://www.euperia.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.euperia.com</link>
	<description>The personal site of Andrew McCombe, Website Engineer</description>
	<lastBuildDate>Fri, 11 May 2012 13:17:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>How to add APC cache to Magento</title>
		<link>http://www.euperia.com/magento/how-to-add-apc-cache-to-magento/799</link>
		<comments>http://www.euperia.com/magento/how-to-add-apc-cache-to-magento/799#comments</comments>
		<pubDate>Thu, 10 May 2012 15:28:10 +0000</pubDate>
		<dc:creator>Andrew McCombe</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://www.euperia.com/?p=799</guid>
		<description><![CDATA[Here&#8217;s how to add APC cache to Magento: The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. It can help speed up your Magento installations. First, install the PHP APC package (Assuming you are using Ubuntu as your web server): sudo apt-get install php-apc Now configure APC for use with [...]]]></description>
			<content:encoded><![CDATA[<h2>Here&#8217;s how to add APC cache to Magento:</h2>
<p>The Alternative PHP Cache (APC) is a free and open opcode cache for PHP.  It can help speed up your Magento installations.  </p>
<p>First, install the PHP APC package (Assuming you are using Ubuntu as your web server):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> php-apc</pre></div></div>

<p>Now configure APC for use with Magento. Edit /etc/php5/conf.d/apc.ini:</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000099;">extension</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">apc.so</span>
apc.enabled <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> On</span>
apc.optimization  <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 0</span>
apc.shm_segments <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 1</span>
apc.shm_size <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 512</span>
apc.ttl <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 7200</span>
apc.user_ttl  <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 720</span>
apc.num_files_hint <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 1024</span>
apc.mmap_file_mask <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> /tmp/apc.XXXXXX</span>
apc.enable_cli <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 1</span>
apc.cache_by_default  <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 1</span>
apc.max_file_size <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 10M</span>
apc.stat <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 0</span>
#apc.include_once_override <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 1</span></pre></div></div>

<p>Once you have changed the apc.ini file you will need to restart the Apache Web Server:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">service apache2 restart</pre></div></div>

<p>Finally, configure Magento to use APC: Edit app/etc/local.xml and add the following:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;global<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
....
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cache<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;backend<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>apc<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/backend<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;prefix<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>MAGE_<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/prefix<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cache<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/global<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>That&#8217;s all there is to it.  To check that APC is being used you can use the APC.php file <a href="http://www.euperia.com/development/php/viewing-the-php-apc-cache-in-ubuntu/437">as discussed in my post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.euperia.com/magento/how-to-add-apc-cache-to-magento/799/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speed testing your website with Siege: Part two</title>
		<link>http://www.euperia.com/linux/tools-and-utilities/speed-testing-your-website-with-siege-part-two/771</link>
		<comments>http://www.euperia.com/linux/tools-and-utilities/speed-testing-your-website-with-siege-part-two/771#comments</comments>
		<pubDate>Thu, 29 Mar 2012 19:00:40 +0000</pubDate>
		<dc:creator>Andrew McCombe</dc:creator>
				<category><![CDATA[Tools and utilities]]></category>
		<category><![CDATA[Website Performance]]></category>

		<guid isPermaLink="false">http://www.euperia.com/?p=771</guid>
		<description><![CDATA[Speed testing more than one url If you need to test more than one URL then you will need to tell Siege to use a file to load the URL&#8217;s from. Simply create a text file called urls.txt and add each URL you want to test on a separate line. $ vim urls.txt &#160; http://www.mywebsite.com/about-us/ [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Speed testing your website with Siege" src="http://dl.dropbox.com/u/6331267/blog/siege.jpg" title="Speed testing your website with Siege" class="aligncenter" width="497" height="251" /></p>
<h2>Speed testing more than one url</h2>
<p>If you need to test more than one URL then you will need to tell Siege to use a file to load the URL&#8217;s from.  Simply create a text file called urls.txt and add each URL you want to test on a separate line.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">$ vim urls.txt
&nbsp;
http://www.mywebsite.com/about-us/
http://www.mywebsite.com/contact-us/</pre></div></div>

<p>To tell Siege to use your urls.txt you need to use the -f parameter.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">siege -v -c10 --reps=once -d5 -f urls.txt 
** SIEGE 2.72
** Preparing 10 concurrent users for battle.
The server is now under siege...
HTTP/1.1 200   0.61 secs:    7817 bytes ==&gt; /about-us/
HTTP/1.1 200   0.66 secs:    7821 bytes ==&gt; /about-us/
HTTP/1.1 200   0.67 secs:    7821 bytes ==&gt; /about-us/
HTTP/1.1 200   0.67 secs:    7821 bytes ==&gt; /about-us/
HTTP/1.1 200   0.72 secs:    7818 bytes ==&gt; /about-us/
HTTP/1.1 200   0.74 secs:    7821 bytes ==&gt; /about-us/
HTTP/1.1 200   0.78 secs:    7821 bytes ==&gt; /about-us/
HTTP/1.1 200   0.60 secs:    8050 bytes ==&gt; /contact-us/
HTTP/1.1 200   0.60 secs:    8050 bytes ==&gt; /contact-us/
HTTP/1.1 200   0.63 secs:    7821 bytes ==&gt; /about-us/
HTTP/1.1 200   0.68 secs:    7819 bytes ==&gt; /about-us/
HTTP/1.1 200   0.69 secs:    7821 bytes ==&gt; /about-us/
HTTP/1.1 200   0.61 secs:    8052 bytes ==&gt; /contact-us/
HTTP/1.1 200   0.60 secs:    8046 bytes ==&gt; /contact-us/
HTTP/1.1 200   0.61 secs:    8043 bytes ==&gt; /contact-us/
HTTP/1.1 200   0.62 secs:    8051 bytes ==&gt; /contact-us/
HTTP/1.1 200   0.60 secs:    8044 bytes ==&gt; /contact-us/
HTTP/1.1 200   0.61 secs:    8052 bytes ==&gt; /contact-us/
HTTP/1.1 200   0.65 secs:    8051 bytes ==&gt; /contact-us/
HTTP/1.1 200   0.62 secs:    8051 bytes ==&gt; /contact-us/
done.
&nbsp;
Transactions:		          20 hits
Availability:		      100.00 %
Elapsed time:		        9.32 secs
Data transferred:	        0.15 MB
Response time:		        0.65 secs
Transaction rate:	        2.15 trans/sec
Throughput:		        0.02 MB/sec
Concurrency:		        1.39
Successful transactions:          20
Failed transactions:	           0
Longest transaction:	        0.78
Shortest transaction:	        0.60</pre></div></div>

<p>As you can see, Siege has requested both URL&#8217;s from the file at random intervals.</p>
<h2>Speed testing a web page with all it&#8217;s assets (JavaScript,CSS, Images etc)</h2>
<p>Everything we have done so far has been testing single html files which is useful for testing page generation. But what if we need to find out the speed of a whole web page including all the images, javascript, css files, video etc?  Simple, you put all the URL&#8217;s of all the webpage assets into the urls.txt file.  However, doing this by hand can be quite painful. Fortunately we can use a proxy tool to create the URL&#8217;s for us.</p>
<h2>Introducing sproxy</h2>
<p>The author of Siege, Jeffrey Fulmer (see the <a href="http://www.joedog.org/siege-home/">siege websute</a>) has also written a companion program to Siege called &#8216;sproxy&#8217;.  Quite simple, sproxy logs all urls to a text file for use with Siege. To do this you need to tell your web browser to connect to the proxy and then simply load your webpage.</p>
<h3>Installing sproxy on Ubuntu (and derivatives)</h3>
<p>Unlike Siege, sproxy doesn&#8217;t appear to be packaged for Ubuntu, so we need to compile and install it.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ curl http:<span style="color: #000000; font-weight: bold;">//</span>www.joedog.org<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>sproxy<span style="color: #000000; font-weight: bold;">/</span>sproxy-latest.tar.gz <span style="color: #660033;">-o</span> sproxy-latest.tar.gz
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> xvfz sproxy-latest.tar.gz
$ <span style="color: #7a0874; font-weight: bold;">cd</span> sproxy-<span style="color: #000000;">1.02</span><span style="color: #000000; font-weight: bold;">/</span>
$ .<span style="color: #000000; font-weight: bold;">/</span>configure
$ <span style="color: #c20cb9; font-weight: bold;">make</span>
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>Once sproxy is installed you should configure your browser to use the proxy.  In Firefox, go to Preferences > Advanced > Network and click the &#8216;settings&#8217; button.  Then select &#8216;Manual Proxy Configuration&#8217; and enter &#8217;127.0.0.1&#8242; in the &#8216;HTTP Proxy:&#8217; field, and &#8217;9001&#8242; in the Port Field.  Once you have done this, click &#8216;OK&#8217; and close your Preferences dialog.<br />
[screenie]</p>
<p>Go to your terminal and launch sproxy.  By default it will bind to the localhost and use port 9001.  Now go to your browser and load a single page on your website.  When it has finished loading, go back to your terminal and quit sproxy using CTRL-C.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">andrew<span style="color: #000000; font-weight: bold;">@</span>andrew-laptop ~ $ sproxy
SPROXY v1.02 listening on port <span style="color: #000000;">9001</span>
...appending HTTP requests to: <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>andrew<span style="color: #000000; font-weight: bold;">/</span>urls.txt
...default connection timeout: <span style="color: #000000;">120</span> seconds
^C
andrew<span style="color: #000000; font-weight: bold;">@</span>andrew-laptop ~ $</pre></div></div>

<p>Now view your urls.txt file and you should see the URL&#8217;s of all images,css and javascript (and any other assets) that your web page contains.  Check the file through and remove any URL&#8217;s you don&#8217;t want to test such as Google Analytics.</p>
<p>Once you&#8217;ve cleaned your urls.txt file you can then siege it as we did previously.  This time we&#8217;ll simulate one user making one request of the whole web page, assets and all.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">siege  -c1 --reps=once -f urls.txt 
** SIEGE 2.72
** Preparing 1 concurrent users for battle.
The server is now under siege..      done.
&nbsp;
Transactions:		          38 hits
Availability:		      100.00 %
Elapsed time:		       26.23 secs
Data transferred:	        0.38 MB
Response time:		        0.19 secs
Transaction rate:	        1.45 trans/sec
Throughput:		        0.01 MB/sec
Concurrency:		        0.27
Successful transactions:          38
Failed transactions:	           0
Longest transaction:	        0.62
Shortest transaction:	        0.10</pre></div></div>

<h2>Simulate Browser Caching</h2>
<p>Siege, by default, requests each URL from the server regardless of any expiry headers sent by the server.  This allows us to simulate a page load with an empty cache but we can also configure Siege to request the URLs and respect any expires headers that are sent.  To do this, open your ~/.siegerc file in your text editor and find the Cache revalidation section (around line 101 in my file).  Simply change the line to &#8216;cache = true&#8217;, save it and re-run your test, this time with the -v flag.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.euperia.com/linux/tools-and-utilities/speed-testing-your-website-with-siege-part-two/771/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speed testing your website with Siege: Part One</title>
		<link>http://www.euperia.com/linux/tools-and-utilities/speed-testing-your-website-with-siege-part-one/720</link>
		<comments>http://www.euperia.com/linux/tools-and-utilities/speed-testing-your-website-with-siege-part-one/720#comments</comments>
		<pubDate>Wed, 28 Mar 2012 20:15:22 +0000</pubDate>
		<dc:creator>Andrew McCombe</dc:creator>
				<category><![CDATA[Tools and utilities]]></category>
		<category><![CDATA[Website Performance]]></category>
		<category><![CDATA[website performance]]></category>

		<guid isPermaLink="false">http://www.euperia.com/?p=720</guid>
		<description><![CDATA[As a website owner your website performance is crucial to your business. You would expect your website to be able to cope with thousands of visits per minute but unless you&#8217;ve prepared for it by purchasing quality hosting services and tuning the servers there is a good change that your website won&#8217;t cope with a [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Speed testing your website with Siege" src="http://dl.dropbox.com/u/6331267/blog/siege.jpg" title="Speed testing your website with Siege" class="aligncenter" width="497" height="251" /></p>
<p>As a website owner your website performance is crucial to your business. You would expect your website to be able to cope with thousands of visits per minute but unless you&#8217;ve prepared for it by purchasing quality hosting services and tuning the servers there is a good change that your website won&#8217;t cope with a lot of traffic and in a lot of cases can lead to a loss of revenue. Tuning your web servers to handle more traffic without crashing is a science of its own and there are many ways to improve performance but before you dive in and start tweaking your Apache or MySQL configurations you need some way of measuring the website performance improvements you make.  There are many tools available for speed testing your website and they all have their merits.  One tool that is easy to use is Siege (<a href="http://www.joedog.org/siege-home/" title="Siege Homepage">Website</a>).</p>
<p>Siege is a command line program that helps measure the speed of your website and provides a summary of the performance which you can use to measure the changes on your web servers.</p>
<h2>Installing Siege on Ubuntu (and derivatives)</h2>
<p>Siege is part of the standard ubuntu packages, so you should install it in the standard way:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> siege</pre></div></div>

<p>Additionally, you can download, compile and install the latest version of Siege. Use the steps below.</p>
<h2>Installing Siege on Mac OSX</h2>
<p>As far as I am aware there isn&#8217;t a package version of Siege for OSX so you can either download,compile and install Siege manually or use Homebrew to install.</p>
<h3>Manually compile and install</h3>
<p>Do the following to download, compile and install Siege on your OSX.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ curl http:<span style="color: #000000; font-weight: bold;">//</span>www.joedog.org<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>siege<span style="color: #000000; font-weight: bold;">/</span>siege-latest.tar.gz <span style="color: #660033;">-o</span> siege-latest.tar.gz
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> xvfz siege-latest.tar.gz
$ <span style="color: #7a0874; font-weight: bold;">cd</span> siege-<span style="color: #000000;">2.72</span>
$ .<span style="color: #000000; font-weight: bold;">/</span>configure
$ <span style="color: #c20cb9; font-weight: bold;">make</span>
$ <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>This will install Seige to /usr/local/bin/siege.</p>
<h3>Installation via Homebrew</h3>
<p>First, install homebrew using the instructions from <a href="https://github.com/mxcl/homebrew/wiki/installation">https://github.com/mxcl/homebrew/wiki/installation</a>.  Once installed you can simply install Siege in one command:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ brew <span style="color: #c20cb9; font-weight: bold;">install</span> siege</pre></div></div>

<h2>Using Siege</h2>
<p>Now that Siege is installed we can begin speed testing your website.  First thing to do is to create the siege config file in your home directory.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">~ $ siege.config 
New configuration template added to <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>andrew<span style="color: #000000; font-weight: bold;">/</span>.siegerc
Run siege <span style="color: #660033;">-C</span> to view the current settings <span style="color: #000000; font-weight: bold;">in</span> that <span style="color: #c20cb9; font-weight: bold;">file</span></pre></div></div>

<p>We&#8217;ll run our first test shortly but first <strong><span style="color:red">a word of warning!</span></strong>.  Siege is a powerful tool and can quite easily bring your web servers down if used incorrectly!  I recommend you test this on your own websites and not those of a third party.</p>
<p>OK, lets run our first test. We&#8217;ll test the homepage of our site by simulating 10 users with a delay of up to 10 seconds between requests.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">~ $ siege -c10 -d10 -r1 -v http://www.mywebsite.com/
** SIEGE 2.72
** Preparing 10 concurrent users for battle.
The server is now under siege...
HTTP/1.1 200   0.12 secs:    4123 bytes ==&gt; /
HTTP/1.1 200   0.11 secs:    4123 bytes ==&gt; /
HTTP/1.1 200   0.11 secs:    4123 bytes ==&gt; /
HTTP/1.1 200   0.12 secs:    4123 bytes ==&gt; /
HTTP/1.1 200   0.11 secs:    4123 bytes ==&gt; /
HTTP/1.1 200   0.13 secs:    4123 bytes ==&gt; /
HTTP/1.1 200   0.11 secs:    4123 bytes ==&gt; /
HTTP/1.1 200   0.11 secs:    4123 bytes ==&gt; /
HTTP/1.1 200   0.12 secs:    4123 bytes ==&gt; /
HTTP/1.1 200   0.11 secs:    4123 bytes ==&gt; /
done.
&nbsp;
Transactions:		          10 hits
Availability:		      100.00 %
Elapsed time:		        8.12 secs
Data transferred:	        0.04 MB
Response time:		        0.11 secs
Transaction rate:	        1.23 trans/sec
Throughput:		        0.00 MB/sec
Concurrency:		        0.14
Successful transactions:          10
Failed transactions:	           0
Longest transaction:	        0.13
Shortest transaction:	        0.11</pre></div></div>

<p>Let&#8217;s break this down a little. First we entered the siege command with a number of parameters:</p>
<ul>
<li>-c10 is the number of concurrent users we want to simulate.</li>
<li>-r1 is the number of repetitions, in this case, 1.</li>
<li>-d10 is the delay between each user request (each siege simulated users sleeps for a random interval in seconds between 0 and 10).</li>
<li>-v is to show the output of each request.</li>
<li>Finally the url to test.  My tests were run on a bona fide website but I have changed the domain name in my examples.
</ul>
<p>Once you hit enter Siege will run and output it&#8217;s results.  The first set of results shows each request.  This shows the HTTP method, the returned HTTP result code (200 is good <img src='http://www.euperia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ), the time taken in seconds, the number of bytes retreived and finally the URL requested.  You can edit your ~/.siegerc to show the full URL if you need to.</p>
<p>After the requests have completed Siege will show you a summary report. This report is documented in the siege man page, which I have reproduced below:</p>
<p><strong>Transactions</strong><br />
The  number  of  server hits.  In the example, 25 simulated users [ -c25 ] each hit the server 10 times [ -r10 ], a total of 250 transactions. It is possible for the  number  of  transactions  to exceed the number of hits that were scheduled. Siege counts every server hit a transaction, which means redirections and authentication challenges count as two hits, not one.  With  this  regard, siege follows the HTTP specification and it mimics browser behavior.</p>
<p><strong>Availability</strong><br />
This is the percentage of socket connections successfully handled by the server. It is the result of socket failures (including timeouts) divided by the sum of all connection attempts. This  number does not include 400 and 500 level server errors which are recorded in &#8220;Failed transactions&#8221; described below.</p>
<p><strong>Elapsed time</strong><br />
The duration of the entire siege test.  This is measured from the time  the  user  invokes  siege until  the last simulated user completes its transactions.  Shown above, the test took 14.67 seconds to complete.</p>
<p><strong>Data transferred</strong><br />
The sum of data transferred to every siege simulated user.  It includes the header information as well  as  content.   Because it includes header information, the number reported by siege will be larger then the number reported by the server. In internet mode, which hits random URLs in a configuration file, this number is expected to vary from run to run.</p>
<p><strong>Response time</strong><br />
The average time it took to respond to each simulated user&#8217;s requests.</p>
<p><strong>Transaction rate</strong><br />
The  average  number  of  transactions  the  server was able to handle per second, in a nutshell: transactions divided by elapsed time.</p>
<p><strong>Throughput</strong><br />
The average number of bytes transferred every second from the server to all the simulated users.</p>
<p><strong>Concurrency</strong><br />
The average number of simultaneous connections,  a  number  which  rises  as  server performance decreases.</p>
<p><strong>Successful transactions</strong><br />
The number of times the server responded with a return code < 400.</p>
<p><strong>Failed transactions</strong><br />
The  number  of  times  the server responded with a return code >= 400 plus the sum of all failed socket transactions which includes socket timeouts.</p>
<p><strong>Longest transaction</strong><br />
The greatest amount of time that any single transaction took, out of all transactions.</p>
<p><strong>Shortest transaction</strong><br />
The smallest amount of time that any single transaction took, out of all transactions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.euperia.com/linux/tools-and-utilities/speed-testing-your-website-with-siege-part-one/720/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress auto update &#8216;Unable to locate WordPress Content directory&#8217; or &#8216;Could not copy file&#8217; fix</title>
		<link>http://www.euperia.com/wordpress/wordpress-auto-update-unable-to-locate-wordpress-content-directory-or-could-not-copy-file-fix/627</link>
		<comments>http://www.euperia.com/wordpress/wordpress-auto-update-unable-to-locate-wordpress-content-directory-or-could-not-copy-file-fix/627#comments</comments>
		<pubDate>Sat, 04 Feb 2012 08:14:00 +0000</pubDate>
		<dc:creator>Andrew McCombe</dc:creator>
				<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.euperia.com/?p=627</guid>
		<description><![CDATA[WordPress is a great way to get a website up and running quickly and the shear number of plugins and themes means that you can do a lot with it. The downside to this is that both Worpress core and your plugins and themes need updating quite often. WordPress provides an interface to auto update [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress is a great way to get a website up and running quickly and the shear number of plugins and themes means that you can do a lot with it. The downside to this is that both Worpress core and your plugins and themes need updating quite often.  WordPress provides an interface to auto update itself by using the FTP details of your hosting but many people get errors such as &#8216;Unable to locate WordPress Content directory (wp-content)&#8217; or &#8216;Could not copy file &#8230;&#8217; when doing this and there are a lot of &#8216;fixes&#8217; suggested online (see <a href="http://wordpress.org/support/topic/cannot-find-content-directory-wp-content">http://wordpress.org/support/topic/cannot-find-content-directory-wp-content</a>).</p>
<p><a href="http://www.euperia.com/wordpress/wordpress-auto-update-unable-to-locate-wordpress-content-directory-or-could-not-copy-file-fix/627/attachment/wordpress-auto-update-fail" rel="attachment wp-att-631"><img src="http://www.euperia.com/wp-content/uploads/Wordpress-auto-update-fail.jpg" alt="WordPress auto update ‘Unable to locate WordPress Content directory’ or ‘Could not copy file’ fix" title="WordPress auto update ‘Unable to locate WordPress Content directory’ or ‘Could not copy file’ fix" width="444" height="250" class="alignnone size-full wp-image-631" style="border: solid 1px black; margin: 20px 0" /></a></p>
<p>The truth is, there is no one single fix for the problem. Sometimes changing the permissions of the WordPress site will sort the problem out, but quite often I see <a href="http://wordpress.org/support/topic/cannot-find-content-directory-wp-content">blog posts</a>) where the problem still persists.</p>
<p>I had the same problem on many of the sites we <a href="http://www.iweb-hosting.co.uk">host at work</a> and I spend a few hours getting to the bottom of it. We set permissions on our hosting to be quite restrictive and discourage the use of setting directory permissions as 0777 as it can be vulnerable to exploits.  We set files as 0644 and directories at 0754, with writeable folders as 0775,  Files and directories are owned by a user and are in the same group as the web server.  I tried changing the permissions, even going as far as setting the public_html directory to 0777 (temporarily) and yet the WordPress Upgrade would fail.</p>
<p>I fired up my IDE and debugger (Netbeans and Xdebug) and stepped through the WordPress code line by line to identify where it was failing to complete the update and soon discovered it was failing when listing a directory using PHP&#8217;s ftp_nlist() function. This would return as boolean false, indicating there was an issue.  Just before this happens, the WordPress code sets FTP passive mode to boolean true and this is where the problem was being caused.</p>
<p>The cause was down to a configuration in the FTP server running on our hosts.  We use Masquerading to provide the external IP address of the server when switching to passive mode but as the connection was from localhost, this was causing passive mode to fail.    A simple configuration change fixed the issue for us.  </p>
<p>If you don&#8217;t have root access on your hosts server you can fix this by editing wp-admin/includes/class-wp-filesystem-ftpext.php and changing the FTP passive mode to false on line 84:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">~$: <span style="color: #c20cb9; font-weight: bold;">vi</span> wp-admin<span style="color: #000000; font-weight: bold;">/</span>includes<span style="color: #000000; font-weight: bold;">/</span>class-wp-filesystem-ftpext.php +<span style="color: #000000;">84</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> <span style="color: #cc66cc;">83</span>                 <span style="color: #666666; font-style: italic;">//Set the Connection to use Passive FTP</span>
 <span style="color: #cc66cc;">84</span>                 <span style="color: #339933;">@</span><span style="color: #990000;">ftp_pasv</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">link</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># was @ftp_pasv( $this-&gt;link, true);</span></pre></div></div>

<p>Note that this will be overwritten when you upgrade WordPress the next time.</p>
<p>Although this is a mis-configuration in the FTP server it would be nice if there was an option in WordPress to choose passive mode or not.  There is a patch and a bug report on the WordPress Trac (see <a href="http://core.trac.wordpress.org/ticket/7940">http://core.trac.wordpress.org/ticket/7940</a>) but this was closed as the developers of WordPress chose to force passive mode to &#8216;on&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.euperia.com/wordpress/wordpress-auto-update-unable-to-locate-wordpress-content-directory-or-could-not-copy-file-fix/627/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My &#8220;Must Have&#8221; utilities on Ubuntu</title>
		<link>http://www.euperia.com/linux/my-must-have-utilities-on-ubuntu/481</link>
		<comments>http://www.euperia.com/linux/my-must-have-utilities-on-ubuntu/481#comments</comments>
		<pubDate>Fri, 04 Nov 2011 17:00:12 +0000</pubDate>
		<dc:creator>Andrew McCombe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tools and utilities]]></category>

		<guid isPermaLink="false">http://www.euperia.com/?p=481</guid>
		<description><![CDATA[My OS of choice is Ubuntu and there are a few &#34;Must Have&#34; utilities on Ubuntu I usually install straight away. Here&#8217;s a list of the ones I use the most. From left to right these are: Shutter http://shutter-project.org/ Shutter is a feature-rich screenshot program. You can take a screenshot of a specific area, window, [...]]]></description>
			<content:encoded><![CDATA[<p>My OS of choice is Ubuntu and there are a few &quot;Must Have&quot; utilities on Ubuntu I usually install straight away. Here&#8217;s a list of the ones I use the most.</p>
<p><img src="http://dl.dropbox.com/u/6331267/blog/my-systray-apps-large.png" alt="my system tray must-have utilities" /></p>
<p>From left to right these are:</p>
<h2>Shutter</h2>
<p><a href="http://shutter-project.org/" alt="Shutter Website">http://shutter-project.org/</a></p>
<p>Shutter is a feature-rich screenshot program. You can take a screenshot of a specific area, window, your whole screen, or even of a website – apply different effects to it, draw on it to highlight points, and then upload to an image hosting site, all within one window. .</p>
<h2>Autokey</h2>
<p>AutoKey is a desktop automation utility for Linux and X11. It allows you to manage collection of scripts and phrases, and assign abbreviations and hotkeys to these. This allows you to execute a script or insert text on demand in whatever program you are using.</p>
<h2>Pidgin</h2>
<p><a href="http://www.pidgin.im" title="Pidgin Website">http://www.pidgin.im</a></p>
<p>Pidgin is a chat program which lets you log in to accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on MSN, talking to a friend on Google Talk, and sitting in a Yahoo chat room all at the same time.</p>
<p>Pidgin runs on Windows, Linux, and other UNIX operating system</p>
<h2>Gnome Do</h2>
<p><a href="http://do.davebsd.com/">http://do.davebsd.com/</a></p>
<p>GNOME Do allows you to quickly search for many items present on your desktop or the web, and perform useful actions on those items.</p>
<p>GNOME Do is inspired by Quicksilver &#038; GNOME Launch Box.</p>
<h2>Parcellite</h2>
<p><a href="http://parcellite.sourceforge.net/" title="Parcellite website">http://parcellite.sourceforge.net/</a></p>
<p>Parcellite is a lightweight GTK+ clipboard manager. This is a stripped down, basic-features-only clipboard manager with a small memory footprint for those who like simplicity.</p>
<h2>Tomboy</h2>
<p><a href="http://projects.gnome.org/tomboy/?pagewanted=all">http://projects.gnome.org/tomboy/?pagewanted=all</a></p>
<p>Tomboy is a desktop note-taking application for Linux, Unix, Windows, and Mac OS X. Simple and easy to use, but with potential to help you organize the ideas and information you deal with every day.</p>
<h2>Dropbox</h2>
<p><a href="http://www.dropbox.com/">http://www.dropbox.com/</a></p>
<p>Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.euperia.com/linux/my-must-have-utilities-on-ubuntu/481/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test SMTP with a dummy Server in Python</title>
		<link>http://www.euperia.com/development/test-smtp-with-a-dummy-server-in-python/460</link>
		<comments>http://www.euperia.com/development/test-smtp-with-a-dummy-server-in-python/460#comments</comments>
		<pubDate>Thu, 13 Oct 2011 12:00:57 +0000</pubDate>
		<dc:creator>Andrew McCombe</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.euperia.com/?p=460</guid>
		<description><![CDATA[Today I came across a need to test SMTP outgoing emails from the web application I was working on. I was working on a simple forgotten password form that sent a password reset url to the registered user&#8217;s email address. I didn&#8217;t need to test that the email looked OK, I just needed to test [...]]]></description>
			<content:encoded><![CDATA[<p>Today I came across a need to test SMTP outgoing emails from the web application I was working on. I was working on a simple forgotten password form that sent a password reset url to the registered user&#8217;s email address.  I didn&#8217;t need to test that the email looked OK, I just needed to test the content.</p>
<p>Instead of setting up Exim or Sendmail and configuring it to redirect mail to my account I discovered that you can use a Python one liner to output all SMTP to the command line. Here&#8217;s how it&#8217;s done:</p>
<h2>Test SMTP with a dummy Server in Python</h2>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> python <span style="color: #660033;">-m</span> smtpd <span style="color: #660033;">-n</span> <span style="color: #660033;">-c</span> DebuggingServer localhost:<span style="color: #000000;">25</span></pre></div></div>

<p>The sudo is needed as you can&#8217;t bind to a port number lower than 1024 as a normal user.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.euperia.com/development/test-smtp-with-a-dummy-server-in-python/460/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Viewing the PHP APC  cache in Ubuntu 10.10</title>
		<link>http://www.euperia.com/development/php/viewing-the-php-apc-cache-in-ubuntu/437</link>
		<comments>http://www.euperia.com/development/php/viewing-the-php-apc-cache-in-ubuntu/437#comments</comments>
		<pubDate>Tue, 11 Oct 2011 09:34:54 +0000</pubDate>
		<dc:creator>Andrew McCombe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.euperia.com/development/php/viewing-the-php-apc-cache-in-ubuntu-10-10/437</guid>
		<description><![CDATA[APC is a great tool for caching in PHP and once installed it is very easy to use. However, what do you do about viewing the PHP APC cache in Ubuntu? Well, there is a fantastic PHP page provided by APC that allows you to inspect the cache via a web page. To use it [...]]]></description>
			<content:encoded><![CDATA[<p>APC is a great tool for caching in PHP and once installed it is very easy to use. However, what do you do about viewing the PHP APC cache in Ubuntu?  Well, there is a fantastic PHP page provided by APC that allows you to inspect the cache via a web page. </p>
<p>To use it you must copy and extract the file to your website document root.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>mysite<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>doc<span style="color: #000000; font-weight: bold;">/</span>php-apc<span style="color: #000000; font-weight: bold;">/</span>apc.php.gz .<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">gunzip</span> apc.php.gz</pre></div></div>

<p>To access the &#8216;user cache entries&#8217; you will need to add a username and password to the apc.php script. These can be found near line 41.</p>
<p>Once done you can access http://mysite.com/apc.php and you will see the APC page. As the advert says, &#8220;simples&#8221;.</p>
<p><a href="http://www.euperia.com/development/php/viewing-the-php-apc-cache-in-ubuntu/437/attachment/apc" rel="attachment wp-att-445" title="Viewing the PHP APC  cache in Ubuntu"><img src="http://www.euperia.com/wp-content/uploads/apc-300x220.jpg" alt="" title="Viewing the PHP APC  cache in Ubuntu" width="300" height="220" class="alignleft size-medium wp-image-445" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.euperia.com/development/php/viewing-the-php-apc-cache-in-ubuntu/437/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What I want from an IM Client</title>
		<link>http://www.euperia.com/development/what-i-want-from-an-im-client/433</link>
		<comments>http://www.euperia.com/development/what-i-want-from-an-im-client/433#comments</comments>
		<pubDate>Wed, 05 Oct 2011 12:43:21 +0000</pubDate>
		<dc:creator>Andrew McCombe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.euperia.com/?p=433</guid>
		<description><![CDATA[Here's the list of features I need from an IM Client.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.euperia.com/wp-content/uploads/im_clients-300x172.jpg" alt="What I want from an IM Client" title="im_clients" width="300" height="172" class="size-medium wp-image-454" /></p>
<p>I&#8217;ve been &#8216;struggling&#8217; to find the ultimate IM Client on my Ubuntu setup. Some do most things but there is usually some functionality missing.  Here&#8217;s the list of what I want from an IM Client:</p>
<ul>
<li>Multiple Accounts (Hotmail/Windows Live, Google, Jabber)</li>
<li>Chat rooms (Jabber)</li>
<li>Bring chat to front when new message received or a new message in the room</li>
<li>history log</li>
<li>file transfers</li>
<li>Block contacts</li>
<li>small/compact contacts list</li>
</ul>
<p>There are many available clients for Linux.</p>
<ul>
<li>Empathy</li>
<li>Pidgin</li>
<li>Kopete</li>
<li>PSi/PSi Plus</li>
<li>Swift</li>
<li>Gajim</li>
</ul>
<h3>Empathy</h3>
<p>This is the default with Ubuntu and integrates with the system nicely. However, I don&#8217;t like the notification system. I want it to bring up the chat window when a message is received, either in a single chat or a room. Also, the sound notifications don&#8217;t seem to work on both my Maverick and Natty installs.</p>
<h3>Pidgin</h3>
<p>I&#8217;ve been using pidgin for a long time and keep coming back to it. It does everything I need it to.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.euperia.com/development/what-i-want-from-an-im-client/433/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging your vimrc</title>
		<link>http://www.euperia.com/development/debugging-your-vimrc/416</link>
		<comments>http://www.euperia.com/development/debugging-your-vimrc/416#comments</comments>
		<pubDate>Fri, 12 Aug 2011 09:25:19 +0000</pubDate>
		<dc:creator>Andrew McCombe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.euperia.com/development/debugging-your-vimrc/</guid>
		<description><![CDATA[I made some changes to my ~/.vimrc file that didn't seem to work and so I needed to see what was happening when vim loaded my ~/.vimrc file.]]></description>
			<content:encoded><![CDATA[<p>I made some changes to my ~/.vimrc file that didn&#8217;t seem to work and so I needed to see what was happening when vim loaded my ~/.vimrc file.</p>
<p>To do this you need to tell vim to log it&#8217;s output to a logfile:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">andrew<span style="color: #000000; font-weight: bold;">@</span>andrew$ <span style="color: #c20cb9; font-weight: bold;">vim</span> -V9vim.log myfile</pre></div></div>

<p>This will then create a logfile called vim.log in the current working directory.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.euperia.com/development/debugging-your-vimrc/416/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do PHP objects use getters and setters internally?</title>
		<link>http://www.euperia.com/development/php/do-php-objects-use-getters-and-setters-internally/405</link>
		<comments>http://www.euperia.com/development/php/do-php-objects-use-getters-and-setters-internally/405#comments</comments>
		<pubDate>Tue, 26 Jul 2011 19:38:04 +0000</pubDate>
		<dc:creator>Andrew McCombe</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[object oriented]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.euperia.com/development/php/do-php-objects-use-getters-and-setters-internally/</guid>
		<description><![CDATA[I just came across something that made me wonder wether a PHP object uses the magic __get() and __set() methods inside the object itself.  I wrote the following code to test: &#60;?php class Test &#123; public function __construct&#40;&#41; &#123; $this-&#62;name = 'Andrew'; &#125; &#160; public function __get&#40;$name&#41; &#123; echo '__get: ' . $name . &#34;\n&#34;; [...]]]></description>
			<content:encoded><![CDATA[<p>I just came across something that made me wonder wether a PHP object uses the magic __get() and __set() methods inside the object itself.  I wrote the following code to test:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #000000; font-weight: bold;">class</span> Test <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
       <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Andrew'</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __get<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'__get: '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __set<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'__set: '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">', '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$value</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Test<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$name</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Amy'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$name</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #339933;">;</span></pre></div></div>

<p>Here&#8217;s the output:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">andrew<span style="color: #000000; font-weight: bold;">@</span>adele:~$ php check_getters.php
__set: name, Andrew
__set: name, Amy
__get: name</pre></div></div>

<p>Answer: Yes they do!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.euperia.com/development/php/do-php-objects-use-getters-and-setters-internally/405/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

