То, как совместно использовать кэш APC между несколькими PHP, обрабатывает при выполнении под FastCGI?

Я решил эту проблему.

Я пытался скомпилировать этот проект «Waveform Android» - https://github.com/Semantive/waveform-android

и получил это Ошибка.

Я использую Android-студию на Ubuntu 14.04LTS.

У меня установлен JAVA 8.

в моем файле сценария построения градиента были некоторые инструкции, как показано ниже.

retrolambda {
    jdk System.getenv("JAVA8_HOME")
    oldJdk System.getenv("JAVA7_HOME")
    javaVersion JavaVersion.VERSION_1_7
}

Я изменил «JAVA8_HOME» на «JAVA_HOME», потому что в моих переменных окружения домашний каталог java как JAVA_HOME, а не как JAVA8_HOME, а затем он успешно сработал.

после изменения скрипта сборки.

retrolambda {
    jdk System.getenv("JAVA_HOME")
    oldJdk System.getenv("JAVA7_HOME")
    javaVersion JavaVersion.VERSION_1_7
}

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

20
задан mjs 28 February 2009 в 18:35
поделиться

3 ответа

APC не не в настоящее время разделяет свой кеш между несколькими Рабочие php-cgi, работающие под управлением fastcgi или fcgid. См. этот запрос функции для подробностей: «это поведение является предполагаемым на данный момент».

Один из способов обхода - позволить PHP управлять своими собственными рабочими процессами. Вы можете сделать это, используя переменную среды PHP_FCGI_CHILDREN в вашем сценарии-оболочке (множество примеров для этого в сети). Вам также следует запретить fastcgi / fcgid порождать более одного процесса PHP, если вы хотите использовать этот метод.

Недостатком PHP_FCGI_CHILDREN является то, что его управление рабочими процессами не так хорошо, как в fcgid / fastcgi.

] Итак, вот и мы. APC в среде fcgid / fastcgi означает предоставление каждому работнику PHP собственного кеша или отключение создания процесса fcgid / fastcgi в пользу встроенного управления PHP. Будем надеяться, что это изменится в будущем.

20
ответ дан 30 November 2019 в 00:35
поделиться

Кэш должен быть совместно использован процессами. Необходимо видеть то же значение для mmap файла между phpinfo () и apc.php вызовами. Это работает на меня с предложенными параметрами конфигурации APC по умолчанию:

extension="apc.so"
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.enable_cli=1

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

, Возможно, это включает Вашу fastcgi+apache конфигурацию.

0
ответ дан 30 November 2019 в 00:35
поделиться

Метод, предложенный Домстером, не идеален. Я делал это в течение короткого времени на некоторых сайтах с небольшим объемом без ошибок. Вчера вечером я написал подробное объяснение , как настроить mod_fastcgi с общим кешем опкодов .

Я обнаружил, что очень важно использовать mod_fastcgi, а не более новый mod_fcgid, потому что mod_fcgid отправит только один запрос на время для процесса PHP независимо от того, сколько дочерних элементов PHP порождено через PHP_FCGI_CHILDREN.

10
ответ дан 30 November 2019 в 00:35
поделиться
Другие вопросы по тегам:

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