Обработка данных в памяти в PHP - PullRequest
0 голосов
/ 07 декабря 2011

Я пишу PHP-фреймворк, который можно использовать для визуализации огромных объемов данных.Я не могу извлечь все данные в память и обработать их (например, сортировать, фильтровать и т. Д.).Итак, у меня есть построитель SQL-запросов, который создает SQL-запросы и передает всю обрабатывающую часть на SQL-сервер.Есть ли способ сделать это с помощью PHP?Или есть какая-то библиотека C, которая хранит данные в двоичном виде и уменьшает использование памяти при обработке?

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Я интенсивно использую движок кэширования в PHPExcel (используя APC, сериализацию объектов, php: // temp, дисковое хранилище, SQLite в памяти, memcache и другие опции), который может работать с огромными числами (несколько миллионов) ) из клеточных объектов. Проблема заключается в уменьшении накладных расходов памяти за счет выделения как можно большего количества ограниченной памяти php при одновременном стремлении поддерживать разумную скорость выполнения: любой кэш ячеек, в котором хранятся данные вне PHP-памяти, неизменно увеличивает накладные расходы на скорость выполнения.

Сериализация данных с использованием igbinary - хороший компромисс, но вы все равно можете выйти за пределы памяти. Это примерно так же быстро, как встроенный в сериализацию PHP, но гораздо более эффективный с точки зрения сжатия данных.

Я бы сказал, чтобы сделать как можно больше с базой данных, потому что базы данных предназначены для такой работы.

1 голос
/ 07 декабря 2011

Zend_Db_Select является частью Zend_Db и Zend Framework и позволяет вам программно создавать свой запрос (создатель запросов, который вы упоминаете), выдвигая и изменяя его части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...