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


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

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

4 11

4 ответа:

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

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

Shm_put_var и shm_get_var.

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

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

Вызовите CLI как CGI / path-to/cgi-sys / php5.цги /домашний/наименование/Кронов/двигателя.php

Вам понадобится веб-сервер, написанный на php - кэш APC совместно используется только раздвоенными дочерними процессами. Если у вас PHP в веб-сервере, можно запустить мастер конфигурации, инициализации БТР, вилка и загрузить/запустить веб-сервер в одном процессе ребенка, и вилка и запустить свой скрипт на php cli в другой. Что-то вроде грубого взлома, ха. Fork и require (), я не думаю, что кэш apc переживет exec ()