<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Planet PHP</title><link rel="alternate" type="text/html" href="http://www.planet-php.net/"/><link rel="self" type="text/html" href="http://www.planet-php.net/atom/"/><subtitle>People blogging about PHP</subtitle><id>http://www.planet-php.net/</id><generator uri="http://planet-php.net/">
            Planet PHP Aggregator
            </generator><updated>2008-07-03T21:03:00Z</updated><entry><title type="text">PDO: Learn how the PDO SQL parser causes bug reports</title><link rel="alternate" type="text/html" href="http://blog.ulf-wendel.de/?p=191" title="PDO: Learn how the PDO SQL parser causes bug reports"/><author><name>Internet Super Hero</name></author><id>http://blog.ulf-wendel.de/?p=191</id><updated>2008-07-03T21:03:00Z</updated><published>2008-07-03T21:03:00Z</published><content type="html"><![CDATA[	
The PDO SQL parser causes many bugs. All drivers suffer from it. By default the parser replaces placeholder with '<bound_value>'.'<bound_value>' is a string.  This can clash with the SQL syntax. PDO can make an INSERT fail. Please learn why and stop reporting bogus bugs.

	Why does PDO parse my SQL ...]]></content></entry><entry><title type="text">Google and Yahoo start indexing SWF's</title><link rel="alternate" type="text/html" href="http://www.rooftopsolutions.nl/article/195" title="Google and Yahoo start indexing SWF's"/><author><name>Evert Pot</name></author><id>http://www.rooftopsolutions.nl/article/195</id><updated>2008-07-03T17:59:00Z</updated><published>2008-07-03T17:59:00Z</published><content type="html"><![CDATA[<p>Via: <a href="http://blog.iconara.net/2008/07/01/swf-indexing-is-a-red-herring-and-you-should-all-know-that-by-now/">Theo Hultberg</a>.</p>

<p>An odd story caught my attention recently, and I've been meaning to put my thoughts down.</p>

<p>I'm often asked the question about indexing flash content recently, and the <a href="http://googlewebmastercentral.blogspot.com/2008/06/improved-flash-indexing.html">recent announcement</a> by google only increased the stir.</p>

<p>It's odd, because even Adobe employees seem <a href="http://blog.digitalbackcountry.com/?p=1470">completely clueless</a> about what it means, and the implications.</p>

<p>Quote from Ryan Steward:<p>

<blockquote>So what does that mean? We are giving a special, search-engine optimized Flash Player to Yahoo and Google which is going to help them crawl through every bit of your SWF file. This Flash Player will act just like a person would in some cases. It will click on your buttons, it will move through the states of your application, <b>get data from the server</b> when your application normally would, and it will capture all of the text and data that you’ve got inside of your Flash-based application. We’ve basically provided a very powerful looking glass into SWF files so Google and Yahoo can pull out meaningful information.</blockquote>

<p>Is in sharp contrast with what google is saying:</p>

<blockquote>We currently do not attach content from external resources that are loaded by your Flash files. If your Flash file loads an html file, an XML file, another SWF file, etc., Google will separately index that resource, but it will not yet be considered to be part of the content in your Flash file.</blockquote>

<p>So essentially, google will index your SWF, but not the actual content it loads. Most modern Flash Apps don't hardcode any textual content these days, and will likely load most of their data from the servers. Most importantly, I feel the SWF <u>should not</u> be indexed at all. SWF is middleware, it is responsible for delivering content to the user, it (should not) be the actual content itself, for any serious web application.</p>

<p>One more gem from the Google blogposting:</p>

<blockquote>That said, you should be aware that Google is now able to see the text that appears to visitors of your website. If you prefer Google to ignore your less informative content, such as a "copyright" or "loading" message, consider replacing the text within an image, which will make it effectively invisible to us.</blockquote>

<h3>So where is this coming from?</h3>

<p>My guess is one argument between picking html vs. Flash to deliver your content, it could be said that a Flash is not SEO-friendly. Getting this message out allows pro-flash people to fight back a little. It definitely feels that this whole announcement has little to do with the technology, but much more with putting the Flash-brand in a better light.</p>

<h3>How would one actually make SWF's SEO-friendly?</h3>

<p>Just don't. Make sure the content is available on the web in an alternative format. Often your flash content is stored in a database (or an XML file for smaller sites). Pick up your favorite server-side scripting language, and make sure the content is also available in an indexable format. Using fancy CSS and Javascript usage you can make sure the content is replaced by the Flash content when a regular user visits.</p>

<p>If you do this, all the normal SEO rules are applied. As a side effect, the user also benefits from this as your content degrades nicely for older or for example mobile browsers, people with disabilities and you name it. The sole reason for this is that search engines are actually try to find 'quality content' based on your search query.</p>

<p>Last but not least, Xhtml is a form of XML. If you use Xhtml as a datasource for your content, search engines can also access it directly.</p>]]></content></entry><entry><title type="text">Resetting the password in Open X</title><link rel="alternate" type="text/html" href="http://phpkitchen.com/2008/07/resetting-the-password-in-open-x/" title="Resetting the password in Open X"/><author><name>Demian Turner</name></author><id>http://phpkitchen.com/2008/07/resetting-the-password-in-open-x/</id><updated>2008-07-03T14:32:00Z</updated><published>2008-07-03T14:32:00Z</published><content type="html"><![CDATA[<p>Every time I need to reset the admin password in <a href="http://www.openx.org/">Open X</a> it takes me ages to scan through all the tables, thinking “which bloody table would contain the admin password”, remembering from the last time it’s the one you least expect …</p>
<p>For future reference, it’s the <strong>preference</strong> table, record 0 and where the agency_id = 0.  Imagine, who ever would have thought of a password as a preference.  I suppose it’s getting better, <a href="http://forum.openx.org/index.php?s=67eff355df978fc480846a875bcb7bca&showtopic=7923&st=30&p=64727&#entry64727">in phpAdsNew it was in the config table</a>!</p>
<p>This is where logical thinking can cause you to waste hours of time: an application has many users, each user has a password …</p>
]]></content></entry><entry><title type="text">Making PHP 5.3 happen</title><link rel="alternate" type="text/html" href="http://pooteeweet.org/blog/0/1238" title="Making PHP 5.3 happen"/><author><name>Lukas Smith</name></author><id>http://pooteeweet.org/blog/0/1238</id><updated>2008-07-03T11:25:00Z</updated><published>2008-07-03T11:25:00Z</published><content type="html"><![CDATA[<p>So I have now joined Johannes as a co-RM for PHP 5.3. Its quite an honor and a challenge. Especially since I still need to find enough OSS time to continue to work on emPHPower and <a href="http://pooteeweet.org/blog/1214/1232">write out a proper proposal for a "constitution"</a> (expect a mailinglist to be setup soon). We hope together we have enough brain cycles to push put what is probably the biggest minor release in the history of PHP. Just take a look at the <a href="http://wiki.php.net/todo/php53">todo list</a> and the <a href="http://wiki.php.net/doc/scratchpad/upgrade/53">scratchpad</a> detailing all the additions. Speaking of the scratchpad, we really really really need more people helping to <a href="http://marc.info/?l=php-internals&m=121504349407856&w=2">identify the changes in PHP 5.3</a>.</p>

<p>Scavenge the <a href="http://cvs.php.net/viewvc.cgi/php-src/NEWS?view=markup&pathrev=PHP_5_3">NEWS</a> file, test your apps against current 5.3 CVS. Do whatever it takes to find all the places where PHP 5.3 adds functionality and more importantly where it breaks existing functionality. Let the php-doc team know your findings, post comments on this blog, send me an email or write them directly into the wiki page. If you have a cvs.php.net account, you are already setup. If not then just register yourself and I will grant the necessary permissions. Please please .. help out in this critical effort. Together we can make sure that everybody has all the information to make a painless transition to this feature filed release.</p>

]]></content></entry><entry><title type="text">PDO_MYSQLND: Calling Stored Procedures works fine with mysqlnd</title><link rel="alternate" type="text/html" href="http://blog.ulf-wendel.de/?p=189" title="PDO_MYSQLND: Calling Stored Procedures works fine with mysqlnd"/><author><name>Internet Super Hero</name></author><id>http://blog.ulf-wendel.de/?p=189</id><updated>2008-07-03T08:31:00Z</updated><published>2008-07-03T08:31:00Z</published><content type="html"><![CDATA[	
Mike is asking I`m hoping that MySQL stored procedures will work properly. Especially multiple calls in one request. in reply to PDO_MYSQLND: R[a|u]mbling and a breeze of progress. Mike, it depends what you mean by "properly". If you use the API properly it works fine with mysqlnd. Read on for ...]]></content></entry><entry><title type="text">Caching and TTL behavior</title><link rel="alternate" type="text/html" href="http://brian.moonspot.net/2008/07/03/caching-and-ttl-behavior/" title="Caching and TTL behavior"/><author><name>Brian Moon</name></author><id>http://brian.moonspot.net/2008/07/03/caching-and-ttl-behavior/</id><updated>2008-07-03T05:04:00Z</updated><published>2008-07-03T05:04:00Z</published><content type="html"><![CDATA[<div class='snap_preview'><br /><p>So, I am working on <a href="http://code.google.com/p/memproxy/">MemProxy</a> some.  Mainly, I am trying to implement more of the Cache-Control header’s many options.  The one that has me a bit perplexed s-maxage.  Particularly when combined with max-age.</p>
<p>s-maxage is the maximum time in seconds an item should remain in a shared cache.  So, if s-maxage is set by the application server, my proxy should keep it for that amount of time at the most.  Up until now, I have just been looking at max-age.  But, s-maxage is the proper one for a proxy to use if it is present.  I do not send the s-maxage through because this is a reverse proxy and, IMO, that is proper behavior for an application accelerating proxy.  However, I do send forward the max-age value that is set by the application servers.  If no max-age is set, I send a default as defined in the script.  Also, if no-cache or no-store is set, I send those and a max-age of 0.</p>
<p>My problem arises when max-age is less than s-maxage.  Up until now, I have sent a max-age back to the client that represents the time left for the cached item in my proxy’s cache.  So, if the app server sent back max-age=300 and a request comes in and the cache is found and the cache was created 100 seconds ago, I send max-age-200 back to the client.  But, I was only using max-age before.  Now, in cases where s-maxage is longer than max-age, I would come up with negative numbers.  That is not cool.  The easiest solution would be to always send the original max-age back to the client.  But, that seems kind of lame.</p>
<p>So, my question is, if you are using an application (HTTP or otherwise) accelerator, what would you expect?  If you application set a max-age of 300 would you always expect the end client to receive a max-age of 300?  Or should it count down over time?  The only experience I have is a CDN.  If you watch CDN traffic, the max-age gets smaller and smaller over time until it hits 0.  I have not tried sending an s-maxage to my CDN.  I don’t know what they would do with that.  Maybe that is a good test.</p>
<p>UPDATE: Writing this gave me an idea.  If the item will be in the proxy cache longer than the max-age ttl, send the full max-age ttl.  Otherwise, send the time left in the proxy cache.  Thoughts on that?</p>
<p>(thanks for being my <a href="http://compaspascal.blogspot.com/2007/12/teddy-bear-principle-in-programming.html">teddy bear</a> blogosphere)</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/147/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/147/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/147/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brian.moonspot.net&blog=302707&post=147&subd=doughboy&ref=&feed=1" /></div>]]></content></entry><entry><title type="text">Caching and TTL behavior</title><link rel="alternate" type="text/html" href="http://brian.moonspot.net/2008/07/03/caching-and-ttl-behavior/" title="Caching and TTL behavior"/><author><name>Brian Moon</name></author><id>http://doughboy.wordpress.com/?p=147</id><updated>2008-07-03T04:56:00Z</updated><published>2008-07-03T04:56:00Z</published><content type="html"><![CDATA[A]]></content></entry><entry><title type="text">Slides: PHP Streams</title><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/EvilAsInDr/~3/325467141/slides-php-streams" title="Slides: PHP Streams"/><author><name>Wez Furlong</name></author><id>http://netevil.org/blog/2008/07/slides-php-streams</id><updated>2008-07-03T04:00:00Z</updated><published>2008-07-03T04:00:00Z</published><content type="html"><![CDATA[<p>Here are the slides from my Streams talk; they cover a variety of bits and pieces of streams background and implementation that may or may not be useful to you.
</p>

<div class="youtube-video"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=phpstreamsluckydip-1215057079440672-8"> </param><param name="allowFullScreen" value="true"> </param><param name="allowScriptAccess" value="always"> </param><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=phpstreamsluckydip-1215057079440672-8" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"> </embed></object></div><div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare" /></a> | <a href="http://www.slideshare.net/wezfurlong/php-streams-lucky-dip?src=embed" title="View PHP Streams: Lucky Dip on SlideShare">View</a></div></div><img src="http://feeds.feedburner.com/~r/EvilAsInDr/~4/325467141" height="1" width="1"/>]]></content></entry><entry><title type="text">Custom Coding Standards with PHP_CodeSniffer </title><link rel="alternate" type="text/html" href="http://inside.e-novative.de/archives/124-Custom-Coding-Standards-with-PHP_CodeSniffer.html" title="Custom Coding Standards with PHP_CodeSniffer "/><author><name>Stefan Priebsch</name></author><id>http://inside.e-novative.de/archives/124-guid.html</id><updated>2008-07-02T19:46:00Z</updated><published>2008-07-02T19:46:00Z</published><content type="html"><![CDATA[
    <span style='display:none;'> type="text/css">
pre {font-size: 12px; line-height: 100%; }
kbd {font-size: 12px;}
</span>


<p>I have tried to write a custom coding standard for <a href="http://inside.e-novative.de/exit.php?url_id=1295&entry_id=124" title="http://pear.php.net/package/PHP_CodeSniffer"  >PHP_CodeSniffer</a>. The <a href="http://inside.e-novative.de/exit.php?url_id=1296&entry_id=124" title="http://pear.php.net/manual/en/package.php.php-codesniffer.coding-standard-tutorial.php"  >documentation</a> shows you how to do this when the coding standard ist located in the PEAR directory.</p>

<p>I don't want to put the standard into the PEAR directory, because I need more flexibility. Some projects may have stricter or more relaxed standards, and I'm also working towards using <a href="http://inside.e-novative.de/exit.php?url_id=1297&entry_id=124" title="http://www.phpundercontrol.org"  >phpUnderControl</a> together with CruiseControl, so I'd prefer to keep the coding standard in subversion.</p> <br /><a href="http://inside.e-novative.de/archives/124-Custom-Coding-Standards-with-PHP_CodeSniffer.html#extended">Continue reading "Custom Coding Standards with PHP_CodeSniffer "</a>
    ]]></content></entry><entry><title type="text">PDO_MYSQLND: R[a&#xA6;u]mbling and a breeze of progress</title><link rel="alternate" type="text/html" href="http://blog.ulf-wendel.de/?p=188" title="PDO_MYSQLND: R[a&#xA6;u]mbling and a breeze of progress"/><author><name>Internet Super Hero</name></author><id>http://blog.ulf-wendel.de/?p=188</id><updated>2008-07-02T19:32:00Z</updated><published>2008-07-02T19:32:00Z</published><content type="html"><![CDATA[	
The modification of PDO_MYSQL to support the MySQL native driver for PHP (mysqlnd) is progressing. We are using the project title “PDO_MYSQLND” for the modification. The goal of PDO_MYSQLND is to provide a PDO driver for MySQL which can be compiled either against the MySQL Client Library or against the ...]]></content></entry></feed>
