Несколько человек упомянули cpan утилиту, но она больше, чем только запускает оболочку. Просто дайте ему модули, которые Вы хотите установить, и позволять ему сделать это - работа.
$prompt> cpan Foo::Bar
, Если Вы не даете ему аргументов, это запускает оболочку CPAN.pm. Это работает над Unix, Mac, и должно быть очень хорошо в Windows (особенно Земляничный Perl).
существует несколько других вещей, которые можно сделать с cpan инструментом также. Вот сводка текущих функций (который мог бы быть более новым, чем тот, который идет с CPAN.pm и жемчугом):
-a
Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.
-A module [ module ... ]
Shows the primary maintainers for the specified modules
-C module [ module ... ]
Show the Changes files for the specified modules
-D module [ module ... ]
Show the module details. This prints one line for each out-of-date module (meaning,
modules locally installed but have newer versions on CPAN). Each line has three columns:
module name, local version, and CPAN version.
-L author [ author ... ]
List the modules by the specified authors.
-h
Prints a help message.
-O
Show the out-of-date modules.
-r
Recompiles dynamically loaded modules with CPAN::Shell->recompile.
-v
Print the script version and CPAN.pm version.
Как это делают большие собаки?
Несколько серверов. Балансировка нагрузки.
Как это делают собачки?
Несколько серверов. Балансировка нагрузки.
Вы действительно хотите сохранить вставки и отправить их в базу данных сразу. 20 тысяч отдельных пластин в секунду - это огромные накладные расходы, и упрощение этого процесса до одной большой пластины в секунду устраняет большую часть этого.
Пара способов:
Во-первых, вы достигнете точки, когда вам нужно разделить или сегментировать данные, чтобы разделить их между несколькими серверами. Это может быть так же просто, как AC на server1, DF на server2 и т. Д.
Во-вторых, отложить запись в базу данных. Вместо этого пишите в быстрое хранилище памяти, используя beanstalkd или memcached напрямую. Попросите другой процесс собрать эти состояния и записать агрегированные данные в базу данных. Периодически объединяйте эти записи в сводные данные.
Попросите другой процесс собрать эти состояния и записать агрегированные данные в базу данных. Периодически объединяйте эти записи в сводные данные. Попросите другой процесс собрать эти состояния и записать агрегированные данные в базу данных. Периодически объединяйте эти записи в сводные данные.Впечатляет. Большая часть моих данных была получена сразу из массивных вставок. Я обнаружил, что объемные вставки намного лучше, чем индивидуальные. Кроме того, дизайн ваших таблиц, индексов и т.д. во многом зависит от скорости вставки. Проблема с использованием cron и массовой вставкой - крайние случаи. (Когда идет делать вставки).
Дополнительно с плоскими файлами. Вы можете легко столкнуться с проблемами параллелизма при записи вставок в файл. Если вы пишете более 1000 вставок, вы быстро столкнетесь с множеством конфликтов и потерь, когда возникнут проблемы с записью файла.
Это не та проблема, которую вы можете решить только в PHP.
Если у вас 20 000 запросов в секунду, ваш "малобюджетный" (как я понял по подтексту вашего вопроса) , то он достигнет своего предела, прежде чем большинство из них достигнут процессора PHP (и, в конечном итоге, MySQL).
Если у вас есть сценарий отслеживания трафика, вы, скорее всего, вызовете проблемы для все сайты, которые вы отслеживаете.
ИМХО, PHP не подходит для большого объема веб-трафика. Однако база данных, скорее всего, утомит вас раньше, чем производительность PHP, особенно с моделью подключения PHP (открывает новое соединение для каждого запроса).
У меня есть два предложения для вас:
SQL Relay эффективно позволяет PHP использовать преимущества пула соединений и это даст гораздо лучшую производительность для приложения базы данных большого объема.
Ускорители PHP (вообще говоря) кэшируют коды операций PHP, что экономит накладные расходы на интерпретацию кода PHP с каждым запросом.
Удачи!
Запись в файл - это прекрасно, но вам все равно нужно синхронизировать запись в файл, что вернет вас к исходной точке.
Предложения:
Поскольку вы отслеживаете показы, что, если попытаться сохранить, скажем, один из каждых 5. Тогда у вас все равно будет полностью "случайная" выборка, и вы можете просто применить процентные значения к больший набор данных.
Я бы также порекомендовал использовать кэширование памяти.
Запишите свои данные в кэш памяти и пусть периодически выполняющееся задание агрегирует их и выполняет вставки.
Запись в реальный файл, вероятно, будет УМЕНЬШИТЕ производительность, поскольку доступ к файловой системе в основном медленнее, чем обращение к базе данных, которая может обрабатывать доступ на запись намного эффективнее.