Как я могу заставить PHP использовать один и тот же кэш APC при вызове в CLI и в Интернете?

Я использую APC для кэширования пользовательских переменных (с помощью команд apc_store/apc_fetch). Я также включил APC для CLI с опцией "apc.enable_cli = 1". Тем не менее, версия CLI для PHP, похоже, обращается к другому кэшу APC из версии, используемой Apache.

Можно ли настроить APC для использования одного и того же кэша для CLI и веб-вызовов?

Ответ 1

Невозможно.. Единственный способ сделать что-то вроде того, что вы просите, использовать что-то вроде memcacheD. Или запустите то, что вам нужно, чтобы запустить ваш веб-сервер. Какой запущенный CLI, который вы не можете запустить через веб-интерфейс script с помощью cronjob?

Ответ 2

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

shm_put_var и shm_get_var.

Это медленнее, чем APC, но быстрее, чем memcached, redis и т.д.

Надеюсь, это поможет вам, и я прошу прощения за свой английский....

Ответ 3

вызовите CLI как CGI /path -to/cgi-sys/php5.cgi/home/name/crons/engine.php

Ответ 4

вам понадобится веб-сервер, написанный на php. Кэш APC разделяется только разветвленными дочерними процессами. Если у вас есть веб-сервер php, вы можете запустить мастер cli, init apc, fork и загрузить/запустить веб-сервер в одном дочернем процессе, а также использовать fork и запустить php cli script в другом. Вид грубого взлома, да. Вилка и require(), я не думаю, что кеш apc выдержит exec()