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

OSCHINA-MIRROR/io3x-diaophp

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

Diaophp

AIC (All in Class)

Здесь используется язык PHP.

<?php
defined('IN_CDO') or exit('illegal infiltration.');
class test_service {
    public function a($var=''){
        return __CLASS__.__LINE__.PHP_EOL;
    }
    public function b(){
        return __CLASS__.__LINE__.PHP_EOL;
    }
}

URL: http://localhost/demo1/test_service/a?var=123456

CLI: php index.php /demo1/test_service/a 123456

DUBBO (на основе diaophp-provider-api): call_dubbo_service("com.github.io3x.php.test_service")->invoke('a',"123456");

Требования

  • Windows или Linux, PHP-5.6+

  • Для Windows и Linux PHP-5.6+ с Swoole-4.2.12

Для Dubbo:

  • CentOS7+ PHP-7.1, Redis-3.2, Zookeeper-3.4.6
  • PHP без Swoole-4.2.12 и Zookeeper-0.5.0
  • Windows, без Zookeeper, но с Dubbo

Установка

CentOS7: https://github.com/io3x/php7-env-bin — PHP 7 env bin для Linux PHP, включая Apache. Windows: https://github.com/io3x/php7-env-bin/releases/download/46e9761/swoole_4.2.12-windows-x86_64.zip — Swoole для Windows.

Структура проекта

В структуре проекта есть следующие файлы и папки:

  • bin — папка с файлами для запуска Dubbo.

    • exter-starter-cmd.bat
    • exter-starter-sh.sh
    • provider-starter-sh.sh
    • rediszoo-starter-sh.sh
  • diaophp-consumer-web — потребительский веб-проект.

    • index.php — файл, который запускает проект.
    • consumer — папка, в которой находятся файлы проекта.
      • cmer.class.php
      • demo.class.php
      • func.php
      • index.class.php
      • setting.php
      • classes — папка, содержащая файлы классов.
        • op.class.php
      • templates — папка, содержащая шаблоны.
        • test — папка, содержащая тестовые шаблоны.
          • footer.html
          • header.html
          • index.html
      • web — папка, которая содержит файлы для работы с веб-частью проекта.
        • func.php
        • index.class.php
        • classes — папка, содержащая файлы классов.
          • op.class.php
        • templates — папка, содержащая шаблоны.
          • test — папка, содержащая тестовые шаблоны.
            • footer.html
            • header.html
            • index.html
  • diaophp-framework-core — фреймворк проекта.

    • composer.json — файл конфигурации проекта.
    • index.php — основной файл проекта.
    • api — папка, содержащая API проекта.
      • func.php
      • index.class.php
      • test.class.php
      • classes — папка, содержащая классы.
        • htmldoc.class.php
        • metadata.class.php
      • templates — папка, содержащая шаблоны.
        • api — папка, содержащая шаблоны для API.
          • doc.html
          • header.html
          • index.html
    • app — папка приложения.
      • common.func.php
      • config.php
      • init.php — инициализирующий файл.
      • libs — папка библиотек.
      • global.func.php Данный текст представляет собой список файлов и папок с различными расширениями.

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

К сожалению, без контекста сложно понять назначение этих файлов. Возможно, это часть структуры проекта или описание зависимостей между компонентами системы.

Также в запросе есть фрагменты текста, которые не удалось распознать. Это может быть связано с тем, что они содержат специальные символы или непечатаемые символы. ### Основные модули

  • composer:
    • diaophp-framework-core;
    • diaophp-consumer-web;
    • diaophp-provider-api.

Composer

  • diaophp-framework-core:

    • alchemy_yaml.class.php;
    • composer.
  • Дополнительные зависимости:

    • diaophp-framework-core/extension;
    • crazyxman/dubbo-php-framework.
  • Файлы в папке app/libs (новые):

    • model.

Веб-сервис и API

  • api, service, web:
    • загрузка классов (loader::load_module_classes("web", "op"));
    • xxx.class.php, классы (classes), func.php, setting.php.

AIC

  • AIC:
    • файл init.php;
    • файлы global.func.php, common.func.php;
    • папка ϵͳclasses;
    • папки func.php, setting.php, xxx.class.php;
    • файл default.php.

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

  • Файл index.php:
    • init.php;
    • global.func.php;
    • ...;
    • common.func.php;
    • ϵͳclasses;
    • func.php;
    • setting.php;
    • xxx.class.php;
    • ...

Файлы конфигурации

  • Файл конфигурации config/data/route.php:
    • имя хоста (hostname).

Запуск

  • Команда запуска:

    • /demo1/test_service/a?var=123456;
    • php index.php /demo1/test_service/a 123456.
  • Запуск через DUBBO:

    • call_dubbo_service("com.github.io3x.php.test_service")->invoke('a',"123456").

Заключение

Diaophp-framework-core — основной модуль.

Запуск веб-приложения

Apache

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^index\.php$ - [L]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php/$1 [L]
</IfModule>

Nginx

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

AIC

web
��  func.php
��  index.class.php
��
����classes
��      op.class.php
��
����templates
    ����test
            footer.html
            header.html
            index.html

api, web, service, uploader:

  • index.class.php;
  • func.php.

Дополнительные сведения

  • Сервер swoole версии 4.2.12;
  • сервис, который запускается по расписанию;
  • запуск сервиса через CLI;
  • использование DUBBO для взаимодействия с другими сервисами.

Запуск сервиса

Команда запуска:

cd bin && ./exter-starter-sh.sh

Пример кода

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

<?php
defined('IN_CDO') or exit('illegal infiltration.');
class crontab_demo {
    /**
     * @param string $crontab
     */
    public final function one($crontab="*/1 * * * *"){
        return date("Y-m-d H:i:s").$crontab;
    }
��

Использование переменной $crontab для задания расписания.

Пример кода для тестирования производительности:

$tt = new cost_time();
        $tt->point_time("�첽�¼�����ʱ��:");
        for($i=0;$i<10;$i++){
            rpc::event(md5_file(__FILE__).__LINE__,function($a,$b,$c){
                mt_srand();
                sleep(mt_rand(1,2));
                echo date("Y-m-d H:i:s");
                print_r(array($a,$b,$c));
            },11,222,$i);
            $tt->point_time("T:");
        }
        print_r($tt->result());

Пример вывода информации о затраченном времени:

$tt = new cost_time();
        $tt->point_time("ͬ���ȴ����ص���:");
        $r=[];
        for($i=0;$i<3;$i++){
            $r[] = rpc::event_callback(md5_file(__FILE__).__LINE__,function($a,$b,$c){
                mt_srand();
                sleep(mt_rand(1,2));
                echo date("Y-m-d H:i:s");
``` ```
return [date("Y-m-d H:i:s"),$a,$b,$c];
            },11,222,$i);
            $tt->point_time("T:");
        }
        print_r($r);
        print_r($tt->result());

Пример кода

$tt = new cost_time();
        $tt->point_time("Пример кода:");
        $tt->point_time("T:");
        $event_callbacks = rpc::event_callbacks();
        for($i=0;$i<10;$i++){
            $event_callbacks->push_event(md5_file(__FILE__).__LINE__,function($a,$b,$c){
                mt_srand();
                sleep(mt_rand(1,2));
                echo date("Y-m-d H:i:s");
                return [date("Y-m-d H:i:s"),$a,$b,$c];
            },11,222,$i);
            $tt->point_time("T:");
        }
        $tt->point_time("T:");
        print_r($event_callbacks->exec(5000));
        $tt->point_time("T:");
        print_r($tt->result());

Dubbo

Dubbo — это PHP-фреймворк от CrazyXman/dubbo-php-framework. Он предоставляет следующие возможности:

  • YAML-конфигурация;
  • PHP API;
  • асинхронные вызовы, включая Redis и Zookeeper;
  • поддержка асинхронных вызовов Swoole.

Использование PHP Dubbo

  • Запустите bin/provider-starter-sh.sh для запуска провайдера.
  • Запустите bin/rediszoo-starter-sh.sh, чтобы запустить Redis и ZooKeeper.
  • Если вы используете Redis и ZooKeeper, запустите bin/rediszoo-starter-sh.sh перед запуском провайдера.
  • В dubbo не забудьте добавить вызов swoole_exit() или swoole_sleep() после вызова mt_srand().

Режимы работы

Существует четыре режима работы:

  1. PHP вызывает PHP (локальный режим).
  2. PHP вызывает Java (локальный режим).
  3. Java вызывает PHP (удаленный режим).
  4. Java вызывает Java (удаленный режим).

Реализация

В каталоге diaophp-provider-api создайте класс xxx_service.class.php и demo2/shop_service.class, который будет содержать следующий код:

<?php
/**
 * Class demo2
 */
class shop_service extends dubbo_provider_main {
    private function m0(){
        echo "m0";
    }
    /**
     *
     */
    public function m1($var1,$var2,$var3="abc"){
        $r =  json_encode_ex(func_get_args()).__CLASS__.__METHOD__;
        echo $r;
        return $r;
    }

    /**
     * Асинхронный вызов m1
     */
    public function async_m1($var1,$var2,$var3="abc"){
        mt_srand();
        sleep(mt_rand(1,5));
        return $this->m1($var1,$var2,$var3);
    }
}
  • Класс demo2 содержит методы m0 и m1.
  • Метод m1 возвращает строку JSON с именем класса и метода.
  • Метод async_m1 выполняет асинхронный вызов метода m1 и возвращает результат.

Для вызова метода async_m1 используйте следующий код:

call_dubbo_service("com.github.io3x.php.shop_service")->invoke('m1',100,"�ҵĵ���-{$i}",timestamp13());

Также можно использовать классы consumer-web\consumer\cmer.class.php для вызова методов m3 и m4 в PHP и методов m7 в Java.

Запустите bin\demo-php-dubbo-cmd.bat для запуска PHP-провайдера и bin\java-dubbo-demo-cmd.bat для запуска Java-провайдера.

PHP и Java Dubbo

SpringBoot Dubbo

Создайте проект Java-provider-api с помощью IDEA.

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

Используйте MySQL и ZooKeeper.

Добавьте зависимость spring-boot-starter-data-jpa в файл pom.xml.

Создайте класс BootApplication.

Запуск

Запустите приложение с помощью команды mvn spring-boot:run.

Откройте браузер по адресу http://localhost:10388/.

Вы увидите страницу приветствия.

Заключение

Это пример использования PHP и Java Dubbo.

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

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

Введение

diaophp — это PHP-фреймворк для микросервисов с двусторонним RPC-вызовом, основанный на Dubbo. Он использует нативный синтаксис PHP, имеет минималистичное ядро и поддерживает встроенные асинхронные задачи и таймеры. Фреймворк также обладает функцией полностью автоматической конфигурации. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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