As a followup to my post... Rolling my own seems that the best solution to start with is bcompiler from PECL as it gets rid of all the shared memory management options.

However, happily EAccellerator http://eaccelerator.net/ has a fine set of configuration options where looking it over, it can be used as the basis of my thoughts - by setting the php filesize to 1 byte for shared memory, I can force all opcode caching to be used.

It also has a good management API, so I can disable built in management and instead hand that process over to a PHP server process to periodically clean out old files as well as refreshing files in the cache when they change on disk.

I also like the fact that you can disable caching on an individual file basis, so if there are files you don't want cached it is easy to fix that.

The one downside is it means no caching for eval.... however that is easily fixed by using include instead of eval[using Streams, one can define a "variable" stream and then include the variable...

So instead of

$evalphp_query = "select mycode FROM my_code_table where code_select = 'criteria'";
$result = mysql_query($evalphp_query);
while ($row = mysql_fetch_object($result)) {
    eval($row->mycode);
}

Instead one could run it as:
$evalphp_query = "select mycode, SHA(mycode) as myfilename, created_timestamp, changed_timestampe FROM my_code_table where code_select = 'criteria'";
$result = mysql_query($evalphp_query);
while ($row = mysql_fetch_object($result)) {
    $pretendfile[$row->myfilename] = $row;
    include('pretendfile://'.$row->myfilename);
}

Register a pretendfile stream handler to provide all the needed file data[change date, created date, size, etc] using the $pretendfile array and not only can all the old eval'd code now be cached by the opcode cacher, but you also gain the ability to use the change timestamp to know when to refresh it.

So I'm curious, while this looks good for hacking/having fun with.. for "real world use" is eaccelerator currently considered stable?
_______________________________________________
New York PHP Users Group Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

http://www.nyphp.org/Show-Participation

Reply via email to