Silex: ExpressJS for PHP
bergie.iki.fi
bergie.iki.fi
The blurb on the git project has "The main idea is, that your app, if built for this protocol, will be able to preload resources, preconnect to databases and response to requests really fast.", which seems like it's taking a persistent approach to running PHP apps. How does this deal with the memory leaks etc?
Can anybody knowledgeable weigh in on this with a little detail about what it is, how stable it is, who's using it, how it stacks up to using PHP-FPM in a spawner pool w/ nginx etc... ?
Indeed, memory leaks are a potential issue with persistent PHP. Garbage collection in 5.3 helps a bit, but in general AiP exposes such issues more readily than regular mod_php setups. This doesn't mean memory leaks in your code wouldn't be an issue anyway, it just means you'll notice them a lot more quickly.
AiP workers die when PHP's memory_limit is exceeeded, and AiP will then restart them.
13958 bergie 20 0 125m 10m 2136 S 1 0.6 0:00.28 php
13959 bergie 20 0 125m 10m 2136 S 1 0.6 0:00.31 php 14051 bergie 20 0 615m 12m 4988 S 0 0.7 0:00.34 node
Node and ExpressJS did 3.79 transactions per second, AiP and Silex did 3.80However, I don't mean to harp on about the memory leaks; It's just that it seems to have been an assumed wisdom in my long association with PHP that you're going to need to restart PHP processes eventually. Perhaps the GC in 5.3 alleviates some of these concerns (including detection of circular references), as does the maturing of the code base and the commonly used libraries over the years.
The fact that you are using AiP happily in production already means that there is both a niche and a successful way to implement this so I'm glad to see new approaches like this emerging.
http://bergie.iki.fi/blog/introducing_the_midgard_create_use...
There were a lot of leaks, when I tried this idea originally, back in php 5.2 days. See http://blog.milkfarmsoft.com/2007/06/php-as-appserver-vs-mem... for example.
But 5.3 solved all of the issues. The only leaks happening these days come from "unofficial" extensions, which introduce errors on C-level. PHP code _never_ results in memory leaks these days, as far as I know.
See klein (https://github.com/chriso/klein.php) for a real PHP express port..