The documentation seems to indicate that $ttl in the call to eaccelerator_put should be the number of seconds until the data should expire. In the past, I thought that it needed a unix time argument ($ttl+time()). If I pass a number of seconds, the key is immediately expired. If I pass a unix time, eaccelerator_list_keys shows each key with a negative ttl.
eAccelerator: 0.9.5
PHP: 5.1.6 pl7 (gentoo), 5.1.6 (suse)
Apache: 2.2.3 (gentoo), 2.2.0 (suse)
test code:
<?php
function test($secs, $time, $data) {
$ttl = $secs;
($time === true) && $ttl += time();
$time = ($time ? 'time' : 'secs');
echo "test:$secs:$time returns " . var_export(eaccelerator_put("test:$secs:$time", $data, $ttl), true) . "\n";
}
$data = serialize(split(' ', 'one two three four five six seven'));
echo '<pre>';
test(30, false, $data);
test(60, false, $data);
test(90, false, $data);
test(30, true, $data);
test(60, true, $data);
test(90, true, $data);
$keys = eaccelerator_list_keys();
usort($keys, create_function('$a,$b', 'return strcmp($a["name"], $b["name"]);'));
echo "\nname\t\t\tcreated\t\tttl\n";
foreach ($keys as $key)
echo "{$key['name']}\t\t{$key['created']}\t{$key['ttl']}\n";
echo '</pre>';
?>
Results:
test:30:secs returns true
test:60:secs returns true
test:90:secs returns true
test:30:time returns true
test:60:time returns true
test:90:time returns true
name created ttl
test:30:secs 1160684762 -1
test:30:time 1160684762 -1973597742
test:60:secs 1160684762 -1
test:60:time 1160684762 -1973597712
test:90:secs 1160684762 -1
test:90:time 1160684762 -1973597682