1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zfeig-yafapi

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Расширение YAF-фреймворка: упаковка часто используемых классов DB, Cache и Log, подходящих для разработки API-интерфейсов

Расширение фреймворка YAF (Yet Another Framework) позволяет упаковать часто используемые классы DB, Cache и Log. Это решение подходит для разработки API-интерфейсов и обладает следующими характеристиками:

  • Неинтрузивность;
  • Простота;
  • Быстрота;
  • Высокая эффективность;
  • Стремление к высокой производительности API.

Расширение: установка и конфигурация

Для установки расширения необходимы Redis, Memcache, Seaslog и YAF. Скачать их можно по следующим ссылкам:

После скачивания необходимо выполнить следующие шаги:

  1. Перейти в каталог с расширением.
  2. Выполнить команду «/usr/local/php/bin/phpize».
  3. Выполнить команду «./configure --with-php-config=/usr/local/php/bin/php-config».
  4. Выполнить команды «make» и «make install».

Затем необходимо настроить параметры PHP.ini для расширений и перезапустить PHP-FPM для активации изменений.

[redis]
extension="redis.so"

[memcahe]
extension="memcache.so"

[opcache]
zend_extension="opcache.so"
opcache.enable=1
opcache.memory_consumption = 100
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 5000
opcache.revalidate_freq = 240
opcache.fast_shutdown = 1
opcache.enable_cli = 1
opcache.huge_code_pages=1

[yaf]
extension="yaf.so"
yaf.environ=product

[seaslog]
extension="seaslog.so"
seaslog.level= 0
seaslog.default_basepath= "/webs/yaf/two/logs"  //Путь должен быть указан корректно
seaslog.default_logger = logger
seaslog.disting_type = 1
seaslog.disting_by_hour = 1
seaslog.use_buffer = 1
seaslog.buffer_size = 100
seaslog.level = 0

[yar]
extension="yar.so"

Чтобы проверить установку модулей, можно использовать команду «php -m» в командной строке.

Развёртывание

Рекомендуется использовать Nginx вместо Apache для достижения высокой производительности. В качестве примера используется виртуальный домен xxxxx, а версия PHP — PHP7.

Конфигурация Nginx:

server {
        listen 80;
        server_name xxxxx;
        root /webs/yaf/two/public;
        index index.php index.html index.htm;


         location ~ .*\.(php|php5)?$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
         }


         if (!-e $request_filename) {
             rewrite ^/(.*) /index.php?$1 last;
          }
}

Apache конфигурация:

  • Файл .htaccess или его размещение в файле httpd.conf.
  • Файл httpd.conf для сайта:
<VirtualHost *:80>
ServerAdmin zfeig
DocumentRoot /webs/yaf/two/public
ServerName xxxxx
ErrorLog "/logs/xxxxx.log"
CustomLog "/logs/xxxxx_access.log" common
</VirtualHost>
  • Файл hosts для виртуального домена:
127.0.0.1   xxxxx

Тестирование базы данных:

По умолчанию используется база данных MySQL. Необходимо импортировать файл article.sql в базу данных test, используя кодировку utf-8.

RPC-сервисы и клиентские вызовы

В контексте разработки API, RPC-сервисы могут использоваться для вызова других микросервисов. В этом случае API-фреймворк выступает в роли клиента, а микросервис — в роли сервера.

Пример RPC-сервера:

Этот пример использует единый вход Server.php и распределяет различные сервисы на основе параметров клиента. Структура микросервиса включает в себя:

  • Service — каталог микросервисов;
  • IndexService.php, TestService.php — конкретные сервисы;
  • autoload.php — файл автозагрузки;
  • Server.php — вход для микросервиса.

Использование RPC-клиента:

Библиотека Rpc/Client.php включена в BootStrap. Вызов RPC-сервисов осуществляется через класс Client. Для этого необходимо убедиться, что конкретный сервис зарегистрирован в узле rpc.services конфигурации, и вызвать его в контроллере action.

Настройка узла rpc:

;Удаленный адрес RPC-запроса
rpc.address = "http://192.168.145.162:8000/Server.php"
;Список удаленных RPC-сервисов
rpc.services = "IndexService,TestService"
rpc.defaultService = "IndexService"

Вызов в action:

$rpcServer = Client::init("TestService");  //Удаленный сервис TestService зарегистрирован в конфигурации rpc.services
$ret = $rpcServer->api(['id'=>1]);  //Метод api удаленного сервиса TestService

Запуск

Необходимо убедиться, что службы Redis, Nginx, PHP-FPM и MySQL запущены. После этого можно просматривать интерфейс.

Пример использования

В корневом каталоге приложения находится файл BootStrap.php, который включает перезапись маршрутов и реализует несколько простых интерфейсов:

  • / — указывает на индексный контроллер и метод index;
  • /:ver/test — указывает на индексный контроллер и метод test;
  • /:ver/demo — указывает на индексный контроллер и метод demo;
  • /:ver/user/:id — указывает на индексный контроллер и метод user, связывая версию и идентификатор параметра.

При посещении URL http://xxxxx/v2/user/8, возвращается следующий результат:

{
    "status": 200,
    "msg": "Получение успешно",
    "result": {
        "id": "8",
        "author": "admin",
        "cid": "1",
        "add_time": "1448333293",
        "title": "О жилищном фонде",
        "content": "О жилищном фонде, поскольку была опубликована новая политика, жилищная политика продолжает корректироваться, это будет все больше влиять на некоторых людей, работающих за границей, которые планируют вернуться домой и купить жилье, здесь мы подробно расскажем вам о жилищных знаниях",
        "brief": "Из-за новой политики публикация, жилищная политика продолжает регулироваться, это повлияет на некоторых людей, которые работают за границей и планируют вернуться домой, чтобы купить дом",
        "version": "2"
    }
}

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Расширение YAF-фреймворка, упаковка часто используемых классов БД, классов кеша и логов. Подходит для разработки API-интерфейсов, неинвазивен, прост, быстр и эффективен. Стремится к высокой производительности API. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zfeig-yafapi.git
git@api.gitlife.ru:oschina-mirror/zfeig-yafapi.git
oschina-mirror
zfeig-yafapi
zfeig-yafapi
master