Как я могу заставить PHP использовать один и тот же кэш APC при вызове в CLI и в интернете?
Я использую APC для кэширования пользовательских переменных (с помощью команд apc_store/apc_fetch). Я также включил APC для CLI с опцией " apc.enable_cli = 1". Однако CLI-версия PHP, по-видимому, обращается к другому кэшу APC, чем версия, используемая Apache.
Можно ли настроить APC на использование одного и того же кэша как для CLI, так и для веб-вызовов?
4 ответа:
Невозможно.. Единственный способ выполнить что-то вроде того, что вы просите, - это использовать что-то вроде memcacheD. Или запустите то, что вам нужно запустить через ваш веб-сервер. Что такое запущенный CLI, который вы не можете запустить через веб-скрипт с cronjob?
Вы можете использовать shm. Эта технология предоставляет доступ к общей памяти Unix. Вы можете поместить некоторую переменную в shm, а затем в другой scritp, даже запрограммированный на другом языке, вы можете получить общие переменные.
Shm_put_var и shm_get_var.
Он медленнее, чем APC, но быстрее, чем memcached, redis и т. д.
Я надеюсь, что это поможет вам, и прошу прощения за мой английский....
Вам понадобится веб-сервер, написанный на php - кэш APC совместно используется только раздвоенными дочерними процессами. Если у вас PHP в веб-сервере, можно запустить мастер конфигурации, инициализации БТР, вилка и загрузить/запустить веб-сервер в одном процессе ребенка, и вилка и запустить свой скрипт на php cli в другой. Что-то вроде грубого взлома, ха. Fork и require (), я не думаю, что кэш apc переживет exec ()