PHP - Apc_Fetch, похоже, не работает - возвращает False - PullRequest
0 голосов
/ 03 сентября 2011

Я использую apc_store и fetch для хранения данных, однако после многих отладок выясняется, что мои функции store или fetch просто не работают:

$bar = 'BAR';
apc_store('foo', $bar);
var_dump(apc_fetch('foo'));

Возвращает

string(3) "BAR"

Но если я сделаю

$new = 'new';
apc_store('test', $new);

И затем на следующей странице

apc_fetch('test')

Возвращаемое значение равно нулю?

Я что-то упустил здесь?

Спасибо

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

APC Fetch не работает в системе GCI, так как для каждого запроса запускается новый поток.

0 голосов
/ 03 сентября 2011

Цитата откуда-то

Если вы настроите PHP с FastCGI, вы, вероятно, столкнетесь с проблемами при использовании этой функции, чтобы получить любую информацию о текущей загрузке. По крайней мере, в моем случае каждый HTTP-запрос обрабатывается другим процессом PHP. Я мог отследить это с помощью функции getmypid (), которая возвращала разные значения при каждом запросе, но только из ограниченного набора. Кроме того, apc_cache_info () дал мне все записи upload_ *, которые были созданы в этом процессе. Поэтому, когда выгрузка была первоначально перехвачена одним процессом PHP, все обновления прогресса также должны быть получены из одного и того же процесса, поскольку информация о кэше APC, по-видимому, не передается нескольким процессам, обрабатывающим этот домен / виртуальный хост. Но это невозможно сказать, потому что PHP имеет собственное управление нагрузкой и обслуживает каждый запрос произвольным процессом.

Короче говоря: при использовании FastCGI и нескольких процессов PHP (рекомендуется из соображений производительности) нельзя использовать отслеживание загрузки APC. Вы будете получать статус только каждые несколько запросов.

Я использую FastCGI, поэтому предположите, что это проблема? Я даже не думал, что это проблема хостинга!

...