APC PHP, обучите меня

Вам необходимо тщательно рассмотреть использование UDP (класс DatagramSocket) в качестве сетевого протокола.

UDP - это упрощенный протокол, который не гарантирует сохранение порядка принятых пакетов. Это может быть частью причины, по которой звук искажается. Пакет, полученный не по порядку, приведет к тому, что аудио пакеты будут проигрываться не по порядку. На границе этих пакетов из непоследовательной последовательности вы услышите щелчки / щелчки, где аудио образец эффективно поврежден. Кроме того, UDP-пакеты не гарантированно будут успешно доставлены. Любые отброшенные пакеты, очевидно, будут усиливать искажение или искажение звука.

TCP (класс Socket) будет лучшим вариантом для оптимального качества звука. TCP является более надежным протоколом, который будет поддерживать порядок получения пакетов. Он также имеет встроенную проверку ошибок и отправит все отброшенные пакеты. Однако из-за этой функциональности внимания у TCP больше сетевых издержек.

Я начал этот ответ с того, что вам нужно тщательно обдумать, какой протокол вы используете. Это потому, что есть смысл использовать любой из них в зависимости от того, что для вас важно.

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

Если вы хотите максимально возможное воспроизведение звука с нулевым искажением, но с удовольствием добавляете немного больше задержки, тогда TCP - это путь.

Я не могу сказать, сколько еще прибавит задержка TCP. Но возможно, что это может быть реализовано, не влияя на пользовательский опыт. Единственный способ узнать это - попробовать и посмотреть.

13
задан James 23 May 2009 в 11:35
поделиться

3 ответа

Как вы знаете, PHP - это интерпретируемый язык, поэтому каждый раз, когда на сервер поступает запрос, ему нужно открывать все необходимые и включенные файлы, анализировать их и выполнять. APC предлагает пропустить этапы require / include и синтаксического анализа (файлы по-прежнему должны быть обязательными, но хранятся в памяти, поэтому доступ осуществляется намного быстрее), поэтому сценарии просто нужно выполнять. На нашем веб-сайте мы используем комбинацию APC и memcached. APC для ускорения вышеупомянутых шагов и memcached для обеспечения быстрого и распределенного хранения и доступа как к глобальным переменным (предварительно вычисленные вызовы дорогостоящих функций и т. Д., Которые могут совместно использоваться несколькими клиентами в течение определенного времени), так и к переменным сеанса. Это позволяет нам иметь несколько серверов переднего плана без потери состояния клиента, такого как статус входа в систему и т. Д.

Когда дело доходит до того, что вы должны кэшировать ... ну, это действительно зависит от вашего приложения. Если вам где-то понадобится несколько внешних интерфейсов, я бы попытался использовать memcached для такого кеширования и хранения и использовать APC в качестве кеша опкодов.

9
ответ дан 1 December 2019 в 22:58
поделиться

Вам не нужно реализовывать функции кэширования кодов операций APC, вы просто включаете их как модуль php.

Размер кеша APC и другая информация о конфигурации находится здесь .

2
ответ дан 1 December 2019 в 22:58
поделиться

APC is both an opcode cache and a general data cache. The latter works pretty much like memcached, whereas the opcode cache works by caching the parsed php-files, so that they won't have to be parsed on each request. That can generally speed up execution time up quite a bit.

9
ответ дан 1 December 2019 в 22:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: