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

StackOverflow https://stackoverflow.com/questions/439262

Вопрос

Я использую 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 ()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top