A permissive license whose main conditions require preservation of copyright and license notices. Contributors provide an express grant of patent rights. Licensed works, modifications, and larger works may be distributed under different terms and without source code.
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-скриптов.
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
{
"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/
Архитектура:
Результаты выполнения:
Локальный доступ 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/
Страница записи видео: 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.
Пример использования:
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 )