Categories php solar

HTTP streams are usable in 5.3.0

en_US 23 Jul 2008 @ 23:35:31 No comments

While working with my Solarified wrapper for Amazon's S3, I found out that prior to version 5.3.0, HTTP streams in PHP are almost unusable.

Read more...

Categories php solar

About Solar's documentation

en_US 2 May 2008 @ 18:43:50 5 comments

I've heard people complain about the lack of documentation for Solar. While I generally agree, there's something I have to say to defend Solar. There's also a few things about framework documentation in general that I feel the need to talk about.

Read more...

Categories php solar lux

Persistent Logins with Lux and Solar

en_US 13 Mar 2008 @ 17:58:24 1 comment

In my previous entry about SQL authentication with Solar I promised to tell about implementing Persistent Logins (a.k.a "Remember Me" -feature) with Solar. I will use the previous entry as a starting point and add functionality to it, so be sure to read it first. I will first describe the idea and then show how you can implement it on your site.

The code is part of the Lux project that I maintain together with Rodrigo Moraes.

Read more...

Chris Cornutt (a.k.a enygma) launched a new version of PHPDeveloper.org. The site is now powered by Solar!

It is always good to hear about new sites running on Solar. What makes this special is that Zend Framework got replaced by Solar :-).

I think it's a pretty common habit to have your usernames and passwords stored in a database table. This little tutorial shows you how to implement SQL-based authentication with Solar. Because of Solar's tight configuration mechanism, this is a walk in the park.

Read more...

Categories php solar

APC user cache and FCGI

en_US 13 Feb 2008 @ 17:26:25 No comments

I had a weird experience a while back when implementing a cache for one of my sites. I figured I'd use APC's user cache because it's pretty fast. All was fine and the site seemed to work really fast. So next thing I did was try ab on it to see how fast it really was. Man did the performance drop. The whole server collapsed! I couldn't make a single request to the server.

The cache was for DB query data (surprise :-), so I took a look at show full processlist. It showed it was running queries multiple times that should not have been running at all. This seemed weird, to say the least.

Next, I took a look at APC's status with apc.php and saw my cache keys there like they should be. So again, I tried ab and refreshed the stats page. Now it displayed a completely different page than previously; some of the keys were missing. I tried refreshing, and again, the results changed.

Then it hit me. It must have something to do with the nature of FCGI because my ab tests would make Apache to spawn new FCGI processes to be able to handle concurrent requests (ab -c). It's pretty obvious: APC has it's own cache for every FCGI process. Not only for user cache but for opcodes as well. With opcodes this is not so bad but a user cache will take a lot of your memory if the same data is stored multiple times. It can also be really slow to setup cache entries for every process.

I didn't want to have data cached multiple times in memory so I switched to memcached. Memcached sends data over a TCP connection so it's a bit slower than APC user cache, but who cares.

Because I'm such a Solar fan-boy I'll tell you that Solar has cache adapters built-in for both APC and memcached. See the full list of cache adapters for Solar here.

In this entry I'd like to demonstrate how you can create reusable view templates with Solar and use them with Solar_View::template() and Solar_View::partial(). I'll tell you why partial() is much practical when reusablility is your goal.

Read more...