Para um site único, pequeno e simples, eu apenas colocaria config em um arquivo PHP. Mantenha simples. O PHP provavelmente não analisa nada mais rápido do que analisa o PHP. Se você usar o APC, o bytecode compilado será armazenado em cache - embora o bytecode seja executado novamente para cada solicitação. Para um arquivo de configuração pequeno, essa execução de bytecode deve levar muito pouco tempo; para um arquivo muito grande, pode demorar um pouco mais.
Para sites de alto tráfego com configurações grandes, armazenar em cache seus dados de configuração no APC (por exemplo, como um único array) é uma boa ideia - no mínimo, você economiza a sobrecarga de realmente executar as instruções em seu arquivo config.php. Notavelmente, o Facebook faz isso. Quando você está atendendo muitas solicitações por segundo, acessar o disco para ler um arquivo de configuração (usando parse_ini_file, um analisador XML etc.) em cada solicitação está fora de questão.
Para meu projeto atual, hospedamos muitos sites, cada um com sua própria configuração. Cada site tinha um banco de dados e um arquivo de configuração; no entanto, certificar-se de que você está sempre usando o arquivo de configuração correto com o banco de dados correto pode se tornar uma dor de cabeça. Além disso, as mudanças exigiriam mudanças em dois lugares - o db e o config. Esquecer um ou outro sempre causava problemas, e acontecia com muita frequência.
Movemos a configuração para o banco de dados, para que você não possa separar um banco de dados de sua configuração correta, e qualquer alteração de código requer apenas a atualização do banco de dados. Os dados da tabela de configuração também são armazenados em cache de forma agressiva no APC, portanto raramente os consultamos.
Então, para recapitular:
- Site pequeno :basta usar um arquivo config.php
- Site muito grande :cache no APC
- Vários sites :armazene a configuração no banco de dados para reduzir a sobrecarga de administração; cache no APC para reduzir os acessos ao banco de dados