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

OSCHINA-MIRROR/qieangel2013-zys

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

zys 高性能服务框架

Build Status

Packagist

Supported PHP versions: >=5.5

License

Основные характеристики

1. Основан на swoole для обеспечения связи распределённого сервера.
2. Основан на thrift для предоставления услуг удалённого вызова процедур (RPC).
3. Основан на HTML5 для предоставления онлайн-платформы сетевого вещания.
4. Основан на swoole для предоставления синхронных и асинхронных сервисов пула соединений с базой данных.
5. Основан на swoole для доставки задач асинхронного сервера.
6. Основан на vmstat для предоставления сервиса мониторинга оборудования сервера в реальном времени.
7. Основан на yac и yaconf для предоставления сервисов совместного использования данных и конфигурации.
8. Основан на zqf для предоставления высокопроизводительных счётчиков, красных пакетов и сервисов двумерных кодов.
9. Отличная поддержка консольных сервисов shell для веб-страниц.
10. Основан на hprose для предоставления RPC-сервисов удалённого вызова и push-уведомлений.
11. Основан на расширении zqfHB для php для предоставления статистики выполнения php-скриптов.

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

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

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

Необходимо запустить php в режиме cli и выполнить /server/server.php
    php server.php start
    php server.php stop
    php server.php restart

Установка composer

{
        "require": {
            "qieangel2013/zys": "2.0.0.1"
    }
}

Распределённый серверный коммуникационный сервис

Устанавливает связь между несколькими серверами для обмена данными. Сервис автоматически подключается к онлайн-серверам и поддерживает горячее подключение после запуска без вмешательства человека.
Примечание:
    Конфигурацию порта и прослушивания, журнала и т. д. необходимо выполнить в conf/application.conf.
    Требуется наличие redis-сервера, и все распределённые серверы должны иметь возможность подключения к redis.
    Веб-интерфейс может напрямую вызывать сервис.
    Использование:
    // Примечание: тип должен быть sql, file, если вам нужны другие функции, определите их самостоятельно
        if($_FILES){
        // Синхронизация данных
        $sql = array('type'=>'sql','data'=>'show tables');
        var_dump(distributed::getInstance()->query($sql));
        //Синхронизация файлов (нет необходимости устанавливать rsync+inotify, можно реализовать синхронизацию файлов, которая использует триггерные механизмы и занимает мало ресурсов, вызывая sendfile с нулевым копированием)
            $dir_pre=MYPATH.'/public/uploads/';
            if(!is_dir($dir_pre.date('Ymd'))){
                mkdir($dir_pre.date('Ymd'),0777,true);
         }
            if(is_uploaded_file($_FILES['file']['tmp_name'])){ 
            $upname=explode('.',$_FILES['file']['name']);
            $filename=uniqid().substr(time(),-4).'.'.$upname[1];
            if(move_uploaded_file($_FILES['file']['tmp_name'],$dir_pre.date('Ymd').'/'.$filename)){  
                echo "Stored in: " . $dir_pre.date('Ymd').'/'.$filename; 
                $fileinfo = array('type'=>'file','data'=>array('path' =>'/public/uploads/'.date('Ymd').'/'.$filename,'size'=>$_FILES['file']['size'],'ext'=>$upname[1]));
                var_dump(distributed::getInstance()->queryfile($fileinfo));
                }else{  
                    echo 'Stored failed:file save error';  
                }  
            }else{
            echo 'Stored failed:no post ';  
        }
    }
        Локальный доступ: http:/localhost/index/distributed/
        Архитектура:

Результаты выполнения:

RPC удалённого вызова на основе Thrift

Локальный доступ http://localhost/index/rpc (возвращает 0, что означает успех)

Использование пула подключений к базе данных

Файл сервиса находится в /server/mysql/DbServer.php.
Простой пакет находится в /application/library/mysql/dbclient.php.
Конфигурация находится в conf/application.ini.
; Конфигурация пула подключений к базе данных
DbServer.async=true // Конфигурация определяет, выполняется ли операция синхронно или асинхронно, по умолчанию не настроена для асинхронной операции, установите значение false для синхронной операции.
DbServer.multiprocess=false // Конфигурация, чтобы включить многопроцессорность, по умолчанию не настроено для однопроцессного блокирующего режима, многопроцессорный режим должен быть установлен в true.
DbServer.pool_num=20 // Настройка количества пулов подключений mysql.
DbServer.port=9501
DbServer.logfile="/server/log/DbServer.log"
DbServer.localip="192.168.2.13"
Использование:
$dbclient=new mysql_dbclient;
    //print_r($data);
    for ($i=0; $i <100 ; $i++) { 
        $dbclient->query("INSERT INTO user(name) VALUES('$i')");
        //echo "INSERT INTO user(name) VALUES('$i')";
    }
    $data=$dbclient->query("select * from user");
    $dbclient->close();
    print_r($data);
    exit;
    Локальный доступ: http:/localhost/index/dbtest/

Многопроцессорное выполнение пула подключений к базе данных выглядит следующим образом

Простая реализация видеовещания на основе swoole (можно передавать аудио, видео и чат в реальном времени)

Страница записи видео: http://localhost/index/swoolelivecamera
Принимающая страница видео: http://localhost/index/swoolelive **Разработка на Vue.js с использованием HTML5: реализация интерфейса чата**

Адрес для демонстрации: http://www.jduxiu.com:88/live/index/index.

LiveIM — это платформа для прямых трансляций с интегрированными функциями чата в реальном времени. Поскольку исходный код не является открытым, для его получения требуется разрешение.

VMStat: мониторинг серверов

Для локального доступа к VMStat используйте адрес: http://localhost/vmstat/.

Выполните следующие действия:

  • Обратите внимание: для доступа к этой информации требуется выполнить определённые команды.

YAC и Yaconf: совместное использование данных и конфигурации

Необходимо установить PHP-расширения YAC и Yaconf.

  • Примечание: расширение Yaconf также требует настройки в файле php.ini. Динамическая загрузка не поддерживается.

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

echo Yaconf::get("conf.zqf");

Расширение YAC используется для хранения общих переменных. Пример использования в качестве счётчика высокой нагрузки:

$yac = new Yac();
$count=$yac->get('zqf');
if(!$count){
    $yac->set('zqf', 1);
}else{
    $yac->set('zqf', $count+0.5);
}
echo $count;

Счётчик высокой нагрузки, система «красных пакетов» и создание QR-кодов

Требуется установить расширение PHP zqf.

Сначала установите расширение PHP zqf.so с помощью команды phpize. Затем вызовите его в PHP-файле.

Также можно загрузить расширение через файл php.ini (см. проект для более подробной информации).

Пример создания счётчика высокой нагрузки (только для многопоточных систем):

$obj=new zqf();
$counter= $obj->autoadd(0,1,0);
echo $counter;

Создание системы «красных пакетов»:

Первый параметр — общая сумма красных пакетов, второй — количество красных пакетов, третий — тип пакета (0 — пакет с сюрпризом, 1 — обычный пакет).

Пакет с сюрпризом:

$hongb= $obj->hongbao(10,8);

Обычный пакет:

$hongb= $obj->hongbao(10,8,1);
var_dump($hongb);

Создание QR-кода:

$obj->savefile('https://www.baidu.com/s?wd=昌平香堂','./test.png',500);
$obj->savefile('https://www.baidu.com/s?wd=昌平香堂','./test.png',500,1);

Здесь первый параметр — URL, второй — путь сохранения, третий — ширина или высота QR-кода, четвёртый — прозрачность (по умолчанию — непрозрачный).

Расширение для сбора статистики времени выполнения PHP-скриптов

Скачайте Hiredis с GitHub:

wget https://github.com/redis/hiredis/archive/v0.13.3.tar.gz

Распакуйте архив:

tar zxvf v0.13.3.tar.gz

Перейдите в каталог hiredis-0.13.3:

cd hiredis-0.13.3

Скомпилируйте и установите:

make install```

Если возникает ошибка ```libhiredis.so.0.13: cannot open shared object file: No such file or directory in Unknown on line 0```, выполните следующие шаги:

1. Откройте файл /etc/ld.so.conf и добавьте строку ```/usr/local/lib```.
2. Выполните команду ```ldconfig```.
3. Скомпилируйте расширение:

```./phpize```

Настройте параметры:

```./configure --with-php-config=/usr/local/php/bin/php-config```

Установите расширение:

```make
make install```

Добавьте расширение в файл php.ini:

```extension=zqfHB.so```

В файле конфигурации zqfHB укажите параметры:

```[zqfHB]
zqfHB.slow_maxtime=10000(单位微妙1s=1000000us,改参数是页面加载超过这个时间会统计)
zqfHB.type=1(1代表redis 2代表memcache,由于memcache性能处理有点低,暂时不开放)
zqfHB.auth=123456(如果redis没有密码,此项不必配置,如果有密码,必须配置此项)
zqfHB.host=192.168.102.163
zqfHB.port=6379```

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

Скопируйте все файлы из веб-каталога или другого каталога на сайт.

Запустите ```http://localhost/web/```.

Эффект:

См. изображения img1.png и img2.png.

**Консоль для веб-страниц**

Доступ к консоли: ```http://localhost/console/console.php```.

**Использование Hprose**

Получите данные:

```echo hprose::getInstance()->getdata();```

Доступ: ```http://localhost/index/hprose```.

**Общение**

Группа обмена опытом ZYS: 337937322.

**Лицензия**

Apache License Version 2.0 см. http://www.apache.org/licenses/LICENSE-2.0.html.

**Пожертвования**

Если вы цените мой труд, пожалуйста, поддержите меня материально. Ваша поддержка  моя главная мотивация.

Изображения:

pw.jpg: https://gitee.com/uploads/images/2017/1024/114925_967ed4c4_636453.jpeg
pay.png: http://git.oschina.net/qieangel2013/zys/raw/master/public/images/pay.png

Список проектов для пожертвований: https://github.com/qieangel2013/zys/wiki/%E9%A1%B9%E7%9B%AE%E6%8D%90%E8%B5%A0.

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

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

Введение

На основе высокопроизводительных сервисных фреймворков YAF и Swoole. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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