Как заставить PHP использовать один и тот же кэш APC при вызове в CLI и в Интернете? - PullRequest
11 голосов
/ 13 января 2009

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

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

Ответы [ 4 ]

11 голосов
/ 14 января 2009

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

4 голосов
/ 06 декабря 2012

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

shm_put_var и shm_get_var.

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

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

1 голос
/ 30 июля 2009

позвоните своему CLI как CGI /path-to/cgi-sys/php5.cgi /home/name/crons/engine.php

0 голосов
/ 02 декабря 2014

вам потребуется веб-сервер, написанный на php - кэш APC используется только для дочерних процессов с разветвленными ветвями. Если у вас есть веб-сервер php, вы можете запустить master cli, init apc, fork и загрузить / запустить веб-сервер в одном дочернем процессе, а затем разветвить и запустить скрипт php cli в другом. Что-то вроде грубого взлома, да. Форк и require (), я не думаю, что кеш apc переживет exec ()

...