Ответ 1
Отказ от ответственности:. Как замечательно, поскольку APC - это когда он работает в CLI, и это потрясающе, это может быть так же неприятно. Используйте со здоровой нагрузкой терпения, будьте осторожны, отходите от проблемы, если вы вращаетесь, имейте в виду, что вы работаете с кешем, поэтому кажется, что он ничего не делает, на самом деле ничего не делает. Удалите файл дампа, начните только с основ, если это не работает, забудьте его попробовать новый компьютер, новую ОС, если он работает, сделать копию, по частям расширить функциональность - есть масса вещей, которые не будут работать, если он работает с фиксацией или делает копию, добавляет еще один кусок и снова тестирует, для проверки работоспособности перепроверяем копии, которые работали до этого, клише или нет; если сначала вам не удастся попробовать попробовать еще раз, вы не можете продолжать делать то же самое, ожидая новых результатов.
Готов? Это то, чего вы ждали:
Включить apc для cli
не рекомендуется создавать, заполнять и уничтожать APC-кеш при каждом запросе CLI
- previous answer by unknown poster since removed.
Вы абсолютно правы, что отстой, давайте исправить его?
Если вы попытаетесь использовать APC в CLI, и он не включен, вы получите предупреждения.
что-то вроде:
PHP Warning: apc_bin_loadfile(): APC is not enabled,
apc_bin_loadfile not available.
PHP Warning: apc_bin_dumpfile(): APC is not enabled,
apc_bin_dumpfile not available.
Предупреждение: Я предлагаю вам не включить cli в php.ini, это не стоит разочарования, вы забудете, что сделали это, и у вас есть множество других головных болей с другими скриптами, доверие мне его не стоит, вместо этого используйте пусковую установку script. (см. ниже)
apc_loadfile и apc_dumpfile в cli
В соответствии с комментарием mayye php нам нужно отключить apc.stat или вы получите предупреждения
что-то вроде:
PHP Warning: apc_bin_dumpfile(): Excluding some files from apc_bin_dump[file].
Cached files must be included using full path with apc.stat=0.
launcher script - php-apc.sh
Мы будем использовать этот script для запуска наших скриптов с поддержкой apc (например, ./php-apc.sh apc-cli.php
) вместо прямого изменения свойств в php.ini
.
#/bin/sh
php -d apc.enable_cli=1 -d apc.stat=0 $1
Готовы к основным функциям? Конечно, вы =)
базовый APC сохраняется - apc-cli.php
<?php
/** check if dump file exists, you don't want to use file_exists */
if (false !== $dump_file = stream_resolve_include_path('apc.dump'))
/** so where were we lets have a look see shall we */
if (false !== apc_bin_loadfile($dump_file))
/** fetch what was stored last run just for fun */
if (false !== $value = apc_fetch('my.awesome.apc.store'))
echo "$value from apc\n";
/** store what gets fetched the next run just for fun */
apc_store('my.awesome.apc.store', 'awesome in cli');
/** what a shlep lets not do that all over again shall we */
apc_bin_dumpfile(array(),null,'apc.dump');
Примечание: Почему бы не использовать file_exists? Потому что file_exists == stat
вы видите, и мы хотим получить награду apc.stat=0
; работа внутри включенного пути; используйте абсолютные и не относительные пути - как возвращено stream_resolve_include_path();
избегать include_once
, require_once
использовать не-t212 > аналоги; проверьте свое использование статистики, когда не использует APC (Muchos important senor), с помощью эхо-потока StreamWrapper для вызовов метода url_stat;
К сожалению: ошибка при превышении избыточного объема! прерывание потока уведомлений. см. url_stat
message: Ошибка, вызванная StreamWrapper, выходит за рамки этого обсуждения.
smoke test
С помощью пусковой установки выполните базовый script
./php-apc.sh apc-cli.php
Целая куча ничего не случилось, что мы хотим правильно, зачем еще вы хотите использовать кеш? Если он ничего выводил, то это не сработало, извините.
Должен быть файл дампа, называемый apc.dump, если вы его найдете? Если вы не можете найти его, это не сработает, извините.
Хорошо, что у нас есть файл дампа, ошибки там не запускались.
./php-apc.sh apc-cli.php
Что вы хотите увидеть:
awesome in cli from apc
Успех! =)
В PHP мало что удовлетворяет как работающая реализация APC.
NJoy!