Как заставить PHP использовать один и тот же кэш APC при вызове в CLI и в Интернете?
-
22-07-2019 - |
Вопрос
Я использую APC для кэширования пользовательских переменных (с помощью команд apc_store / apc_fetch). Я также включил APC для интерфейса командной строки с параметром " apc.enable_cli = 1 " ;. Однако CLI-версия PHP, по-видимому, имеет доступ к кешу APC, отличному от версии, используемой Apache. Р>
Можно ли настроить APC для использования одного и того же кэша как для CLI, так и для веб-вызовов?
Решение
Невозможно. Единственный способ выполнить что-то вроде того, о чем вы просите, - это использовать что-то вроде memcacheD. Или запустите то, что вам нужно для запуска через веб-сервер. Что такое CLI, который нельзя запустить через веб-скрипт с cronjob?
Другие советы
Вы можете использовать шм. Эта технология предоставляет доступ к общей памяти Unix. Вы можете поместить некоторую переменную в shm, а затем в другой сценарий, даже запрограммировав в другом языке, вы можете получить общие переменные.
shm_put_var и shm_get_var.
Это медленнее, чем APC, но быстрее, чем memcached, redis и т. д.
Я надеюсь, что это поможет вам, и я извиняюсь за мой английский ....
позвоните своему CLI как CGI /path-to/cgi-sys/php5.cgi /home/name/crons/engine.php
вам понадобится веб-сервер, написанный на php - кэш APC используется только разветвленными дочерними процессами. Если у вас есть веб-сервер php, вы можете запустить master cli, init apc, fork и загрузить / запустить веб-сервер в одном дочернем процессе, а затем разветвить и запустить скрипт php cli в другом. Что-то вроде грубого взлома, да. Форк и require (), я не думаю, что кеш apc переживет exec ()