Intereting Posts
Преобразование php-кода в javascript-код Класс «App \ Http \ Controllers \ DB» не найден, и я также не могу использовать новую модель Увеличение тайм-аута сеанса в PHP через .htaccess Манипуляция изображения в CodeIgniter Как создать новую запись с фотографией, прикрепленной в WordPress с помощью XMLRPC? Как сделать запрос с использованием базовой аутентификации HTTP с помощью PHP curl? Как вернуть код HTTP 500 при любой ошибке, независимо от того, что API-интерфейс API Карт Google v3 / база данных фильтров Как определить глобальную переменную (значение) в codeIgniter Реализация GCM с использованием PHP, всегда сталкивающегося с неавторизованной ошибкой 401 Получить элемент в позиции N в массиве без цикла Как написать простой объект в PHP Как переключиться с POST на GET в PHP CURL Zend Framework 2 Маршрутизация поддоменов к модулю strtotime («Первый понедельник ..»), когда в первый день месяца возвращается неверная дата

Расширение APC и Custom Mmap

Хорошо, поэтому я работаю над этим проектом, который требует, чтобы я делал поиск в хранилище ключей памяти в таблице. Бизнес-правила, с которыми я работаю, также диктуют, что эта таблица должна быть прочитана из памяти на каждом отдельном узле, и таблица должна сохраняться в нескольких запросах.

Таким образом, очевидным решением является использование APC с apc_fetch (); и apc_store ();

Проблема состоит в том, что таблица будет состоять из тысяч и тысяч пар ключевых значений и будет иметь размер в несколько мегабайт (машины, на которых это будет работать, – это бегемот памяти)

Поэтому у меня есть некоторые проблемы с точки зрения производительности, если APC делает сериализацию кэша пользователя при загрузке.

Если это не так, то это не должно быть так много, и тогда это было бы наиболее оптимальным решением.

Однако, если это не было бы лучшей альтернативой написанию пользовательского расширения в C, который выполнял двоичный поиск в отсортированном файле структур, сохраняемых на диске?

Или (надеюсь) напишет, что пользовательское расширение просто не стоит этого.

Победы, потери, быстрые мысли?

заранее спасибо

Хотя APC будет сериализоваться при загрузке, фактический поиск через apc_fetch() выполняется через хеш-таблицу и не должен иметь узких мест, которые вы описываете. Поскольку ваши машины – это behemoths памяти, вы должны рассмотреть возможность настройки таблиц APC на достаточно большие, чтобы держать все ваши пары ключ / значение в памяти. Это можно сделать, установив apc.user_entries_hint в php.ini в соответствующее значение для вашего приложения.

Попробуйте взглянуть на https://serverfault.com/questions/57915/ram-disk-and-physical-raid В основном загляните в tmpfs на linux и используйте его в качестве файловой системы regulat с любыми правилами, которые вы хотите. Его также легко отлаживать и проверять вне приложения.