Как сделать APC (Кэш PHP) работой?

Запустите с первого битового массива путем помещения его в Объект изображения

Bitmap bitmap = (Bitmap)Image.FromFile(file);

, Сохраняют битовый массив к памяти как tiff

MemoryStream byteStream = new MemoryStream();
bitmap.Save(byteStream, ImageFormat.Tiff);

, Помещенный Tiff в другой Объект изображения

Image tiff = Image.FromStream(byteStream)

Готовит кодеры:

var encoderInfo = ImageCodecInfo.GetImageEncoders().First(i => i.MimeType == "image/tiff");

EncoderParameters encoderParams = new EncoderParameters(2);
encoderParams.Param[0] = new EncoderParameter(Encoder.Compression, (long)EncoderValue.CompressionNone);
encoderParams.Param[1] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.MultiFrame);

Сохраняют в файл:

tiff.Save(sOutFilePath, encoderInfo, encoderParams);

Для последующих страниц, подготовьте кодеры:

EncoderParameters EncoderParams = new EncoderParameters(2);
EncoderParameter SaveEncodeParam = new EncoderParameter(
     Encoder.SaveFlag, 
     (long)EncoderValue.FrameDimensionPage);
EncoderParameter CompressionEncodeParam = new EncoderParameter(
     Encoder.Compression, (long)EncoderValue.CompressionNone);
EncoderParams.Param[0] = CompressionEncodeParam;
EncoderParams.Param[1] = SaveEncodeParam;
tiff.SaveAdd(/* next image as tiff - do the same as above with memory */, EncoderParams);

Наконец сбрасывают файл:

EncoderParameter SaveEncodeParam = new EncoderParameter(
     Encoder.SaveFlag, (long)EncoderValue.Flush);
EncoderParams = new EncoderParameters(1);
EncoderParams.Param[0] = SaveEncodeParam;
tiff.SaveAdd(EncoderParams);

, Который должен запустить Вас.

13
задан Tomasz Smykowski 26 May 2012 в 23:22
поделиться

4 ответа

APC можно использовать двумя способами:

  1. Как кэш опкодов. У вас включена поддержка, так что это работает; и
  2. как общий тайник. Для этого необходимо явно использовать API .

(1) является основным преимуществом. Это сокращает время выполнения сценария за счет сохранения результатов кода операции «компиляции» сценариев.

Что касается его работы, то из инструкций по установке :

Примечание: В Windows APC требуется временный путь существовать и быть доступным для записи веб сервер. Проверяет TMP, TEMP, Переменные среды USERPROFILE в этот порядок и, наконец, пробует Каталог WINDOWS, если ни один из них не set.

Значит, вам это не нужно (или видеть какую-либо активность) в CentOS.

При этом require / include лучше, чем require_once / include_once / autoload, но это имеет значение только в том случае, если вы делаете это с сотни файлов.

8
ответ дан 2 December 2019 в 00:46
поделиться

Является ли ваш сайт в основном одним файлом PHP, который затем включает или требует других файлов? Это может быть зарегистрировано как один файл. Кроме того, насколько мне известно, условная логика включения / требования может не кэшироваться должным образом, хотя это может быть слухами!

2
ответ дан 2 December 2019 в 00:46
поделиться

Did you check thr log files? take a look at /var/log/apache2/error.log or however its named under your distribution.

Also, try to make 2-3 php files, point thebrowser at them, and then check how many php files are cached by the APC cache..

Not sure about APC, but i'd recommend Eaccelerator (http://eaccelerator.net/). I've tested it some time ago and really made a difference.

1
ответ дан 2 December 2019 в 00:46
поделиться

APC фактически не разделяет кэш между процессами. Попробуйте сконфигурировать ваш PHP-процесс для разветвления Childs и позволить главному PHP-процессу продолжать работу.

См .: Как разделить кеш APC между несколькими процессами PHP при работе под FastCGI?

1
ответ дан 2 December 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: