Paloş::Code.Blog()

Thoughts about high architecture and sheer speed.

Archive for the ‘PHP’


Rest in peace “psstream”

Alright folks, I have been missing for a while but here I am again!

I have to say I’m impressed by the feedback I got from you on the psstream PHP extension. However, it has been a while now since I reached the conclusion that the whole idea of psstream is essentially flawed. Don’t get me wrong, the software does its job but it leaves a lot to be desired from it once you want high-volume streaming on your website (maybe on a youtube clone or something). Here are the big issues:

1. Basically, the PHP virtual machine eats a lot of memory, it starts quite slow and has a relatively low limit on how many PHP processes can run in parallel. Streaming from PHP engages all that machinery without justice and consumes a ridiculous amount of resources for something that shouldn’t!

2. Usually we run PHP on a web-server (Apache, Nginx, Lighttpd etc.). This means that all the data that PHP delivers to the clients actually goes through the web-server, therefore increasing to the problem.

3. Psstream uses a moov-seek code that was taken from the great guys at code-shop.com and it did the job. However, (without disrespect) that code has grossly fallen behind (even the guys at code-shop have re-written it from scratch in newer versions of their modules). It is not optimized, uses quite a bit of memory (to load the atoms) and is simply not optimized at all.

These would be just a few (but the implications are much deeper). As a consequence I have written a brand new streamer called Loomiere/Streamer that yields far higher performance than psstream. Therefore I regret to announce that as of today, the psstream PHP extension is officially discontinued.

On the bright side, you can now use (and contribute to) the new streamer that promises a lot. I have written a more detailed article about Loomiere/Stream on my new blog valeriu.palos.ro.

So you’re invited to check it out.

“psstream” is dead, long live “Loomiere/Stream”!

Enjoy!

Add to Technorati FavoritesEnjoyed this post?, why not subscribe to the RSS feed!

Pseudo-streaming MP4/H264 video from PHP

After struggling for a while I managed to put together a PHP extension for (pseudo-)streaming video files encoded with the all-new H264 codec, based on the wonderful work of these guys , thus giving people the ability to seek into MP4 files by using PHP and any webserver they like (like Apache, NGINX etc.). Anyone who knows anything about this will know what a pain it can be. [Sorry, the demo server is no longer available since I’m currently using it in a separate context to develop an improved version of this package]. (more…)

Add to Technorati FavoritesEnjoyed this post?, why not subscribe to the RSS feed!

Google TH 2008 Reloaded

Following my first attempt, I optimized the scripts and improved on my times considerably. I’m really happy with the outcome considering it was all done with PHP. My faith in this platform is increasing :). Note that I also used a slower computer (a laptop) this timeand I decided to to my own time measuring to exclude the loading of the prime numbers (if you think this is cheating then you can simply run the scripts using the time command).

Results:

php -f google_th_4b.php 

Loading primes... done.
Solving for inputs 25, 129, 139, 1087, 1199…
Found prime number 9256873 in 0.32996106147766 seconds.
php -f google_th_4b.php 

Loading primes... done.
Solving for inputs 7, 17, 41, 541…
Found prime number 7830239 in 0.75763010978699 seconds.

Sources:

google_th_4b_prepare.phps

google_th_4b.phps

Add to Technorati FavoritesEnjoyed this post?, why not subscribe to the RSS feed!

Google Treasure Hunt 2008 (#4)

Hey there people! After viewing (and being enticed by) Leonardo’s post (and also Peteris’) I decided to take a shot at this problem… using PHP. That’s right, I wanted to see how fast I can make a PHP script solve this darn thing. Because I (also) wanted to make use of the pregenerated list of primes, I made a preparation script first that downloads a specified amount of 1 million prime numbers chunks and inserts them into an SQLite database for easier (and faster) access from PHP (this script is called google_th_4_prepare.php). I only called this script for just 1 million primes since all numbers I tried fit within that, but you can do more if you want (see the defined constants)! (more…)

Add to Technorati FavoritesEnjoyed this post?, why not subscribe to the RSS feed!

Ubuntu packages for latest PHP snapshots

It was my great pleasure to find (some time ago) that, starting with version 5.3.0, PHP supports namespaces (among many other things). Even more exciting is that starting with version 6 it also supports Unicode natively. How awesome is that!!!

However there is a slight problem: these versions are only snapshots at the present time so there are no binary packages provided for them by our beloved Linux distributions and since I really don’t like messing up my beautiful Ubuntu Hardy installation with (uninstallable) source compilations I couldn’t make use of PHP’s new features. This is where CheckInstall comes in to the rescue…

Edit: There now exists a set of pre-built .deb packages for Debian and Ubuntu here, thanks to Void. (more…)

Add to Technorati FavoritesEnjoyed this post?, why not subscribe to the RSS feed!