Как стать автором
Поиск
Написать публикацию
Обновить

Как увеличить быстродействие *AMP сервера за счет использования `скомпилированных` сценариев

Статья описывает, как автоматизировать процесс генерации `скомпилированных` сценариев.

Нам понадобится экспериментальная версия `компилятора` php сценариев — bcompiler. Скачать библиотеку здесь: bcompiler(win32 0.14s) (Работала вместе с Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4)

Используя функцию (getCacheFileName), единственным параметром которой является имя файла, который необходимо подключить к проекту. Функция по входному параметру строит уникальный идентификатор, используя имя файла и время последнего его изменения, и проверяет его наличие в папке `скомпилированных` сценариев, если такого нет, то `компилирует` файл и сохраняется, в результате на выходе имеем имя скомпилированного файла, который можно подключить так же свободно как и обычный сценарий php, используя include.

Повышение быстродействия зависит от сложности кода php и может быть до 20%%.

Далее пример..
Содержимое каталога:
  • dir cache
  • index.php
  • inc.php


Файл index.php
function getCacheFileName($strFileNameInc){
  // папка для Cache файлов
  $strFolderCache = 'cache/';
  // время изменения файла
  $intFileTime = filemtime($strFileNameInc);
  // Cache имя файла
  $strFileNameCache = md5($strFileNameInc.$intFileTime);
  // Путь к файлу
  $strFilePathCache = $strFolderCache.$strFileNameCache.'.phb'; 
  // Если нет откомпилированного файла 
  if(!file_exists($strFilePathCache)){
    // Компиляция
    {
      // http://ru.php.net/manual/en/function.bcompiler-write-file.php
      $fh = fopen($strFilePathCache, 'w');
      bcompiler_write_header($fh);
      bcompiler_write_file($fh, $strFileNameInc);
      bcompiler_write_footer($fh);
      fclose($fh);
    }
  }
  return $strFilePathCache;
}
 
include getCacheFileName('inc.php');


Файл inc.php
phpinfo();


Если я смог помочь хотя бы одному человеку, значит день прожит не зря.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.