PHP texis plugin
Several months back I wrote a hackish PHP extension to natively connect and talk with Thunderstone's texis SQL daemon and now it's just sitting around unused and unfinished. What I can't figure out is whether there's anyone out there who'd actually want such a beast - we were only thinking about going that route because we had a poorly deployed search index running out of texis, and replacing vortex with PHP seemed like a good idea.
Exploit written for recently discovered PHP-APC vuln
So I discovered a vulnerability recently (see the previous article) in APC and disclosed it, and it's sat there for a few days without feedback... so I went ahead and wrote a proof of concept exploit for it.
Vulnerability dicovered in PHP APC module
UPDATE: CVE-2008-1488 has been opened for this vulnerability
So I was noticing apache segfaulting today when I was accidentally attempting to include() a Savant3 Error object. Attached strace, and saw that it was trying to stat the string representation of Savant3 (woops!) and was getting back -1 and name too long as the errorno, but then shortly after it was segfaulting.
sneak peek: wizDom - manipulating the DOM with the ease of jQuery from PHP
What do you get if you take the ease of jQuery, the standards compliance of XPath, and implement it in PHP? wizDom!
(This is my first post in some time - I've been busy! Since the last post, I've migrated the site from wordpress to drupal, and there are some outstanding character encoding and lack-of-attachment problems I need to attend to. Hopefully I'll get to that soon...)
Excitement for plainTemplates
I wanted to express my excitement about plainTemplates today.
The plainTemplates approach for template generation is to have the template be plain HTML, and then to have a PHP processor fill certain parts of the document with dynamic content. It's familiar territory for anyone who has written an AJA[X?] application in recent times.
It makes a lot of sense for anyone who is used to adding javascript entirely at the head of a page instead of by adding javascript throughout the HTML, and I suspect that, properly implemented, it could not only save time, but increase the hardiness of web applications.
A simple RSS to SQL generator
Was looking for a simple way to put entries from an RSS feed into a database the other day, and didn't like what I found via a quick google. So, I put together a very short and to the point script using SimpleXML and the php mysql driver:
<?php
$ch = curl_init($argv[1]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$rss = new SimpleXMLElement(curl_exec($ch));
// fill these next two rows in!
$dbLink = mysql_connect('localhost', 'username', 'xxxxx');
mysql_select_db('xxxxx', $dbLink);
foreach($rss->channel->item as $blah) {
Drupal module performance
Now that chx has beaten me to it, I'm going to profile and patch and find all the low hanging fruit to cache in drupal. Here's an improvement to the module_hook function.
drupal theme performance
I've been playing with callgrind, xdebug, and kcachegrind to profile drupal. I'll go over the details of my results in a future blog entry, but if you want the short story just check out Rasmus's directions. Rasmus has given lots of talks with similar names to "Getting Rich with PHP5" and I'll leave it to the reader to google and find slides from this talk.
Profiling is an iterative process, and after awhile I might blog about it with something more concrete. But for now, I have early results.
Template Engine Performance Bake-off
PHP was started as a template engine but it's grown into a full featured language, so much so that for some, keeping logic and presentation separate is a real challenge. That's led to an entire class of "template engines" being implemented on PHP. On one extreme, these engines provide a wholly distinct template markup language that in turn is compiled into PHP - e.g. Smarty. On the other side are contenders like Savant - but the unanswered question is, how do they perform?
A tiki performance shakedown
A few weeks ago, I was brought in to help raise the performance of a site running tiki that was under high load.
I saw Rasmus Lerdorf give a very interesting talk on PHP optimization called "Getting Rich with PHP5." In it, he recommends the use of valgrind as a way of holistically profiling a web server running an application. That's a nice way of seeing what's holding you down when you have that luxury, but what can you do when the machine is under heavy load?