Как я могу заставить 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()