Опять продолжаем уничтожать "тестовый стенд" (FreeBSD 9.0).
Для начала APC надо поставить. Не будем выпендриваться и ставить последние тестовые сборки, а поставимто, что точно будет работать. Опять же ставим из портов:
cd /usr/ports/www/pecl-APC
make config
make install
make clean
Поставилась версия 3.1.9. Ну и отлично (на данный момент существует версия 3.1.14).
Лезем в php.ini и в него пишем что-то типа этого:
[apc]
apc.enabled=1
apc.shm_segments=1
apc.shm_size=64M
apc.ttl=7200
apc.user_ttl=7200
apc.enable_cli=1
apc.stat=1
Перезагружаем апач:
/usr/local/sbin/apachectl restart
Пишем простецкий скрипт:
<?php $time_start = microtime(true); for($i=0;$i<1000000;$i++) { apc_add('key' . $i, 'MyTestString'); } echo "Wrire: " . ( microtime(true) - $time_start ) . " seconds\n"; $time_start = microtime(true); for($i=0;$i<1000000;$i++) { apc_fetch('key'. $i); } echo "Read: " . ( microtime(true) - $time_start ) . " seconds\n"; ?>
И, если честно, результат меня немного удивил. Memcache и redeis c данной задачей (просто сохранить значение до лучших времен) справляются значительно хуже...
Wrire: 18.032884120941 seconds
Read: 4.9028170108795 seconds
В целом оно и понятно почему, но все равно производительность APC порадовала.
shutdown -p now