Skip to content

Commit 243d8b7

Browse files
committed
Upate
1 parent 7355407 commit 243d8b7

38 files changed

+10150
-2
lines changed

.env.example

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
APP_NAME=skeleton
2+
APP_ENV=dev
3+
4+
DB_DRIVER=mysql
5+
DB_HOST=localhost
6+
DB_PORT=3306
7+
DB_DATABASE=hyperf
8+
DB_USERNAME=root
9+
DB_PASSWORD=
10+
DB_CHARSET=utf8mb4
11+
DB_COLLATION=utf8mb4_unicode_ci
12+
DB_PREFIX=
13+
14+
REDIS_HOST=localhost
15+
REDIS_AUTH=(null)
16+
REDIS_PORT=6379
17+
REDIS_DB=0

.gitignore

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
.buildpath
2+
.settings/
3+
.project
4+
*.patch
5+
.idea/
6+
.git/
7+
runtime/
8+
vendor/
9+
.phpintel/
10+
.env
11+
.DS_Store
12+
.phpunit*
13+
*.cache
14+
.vscode/

.gitlab-ci.yml

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# usermod -aG docker gitlab-runner
2+
3+
stages:
4+
- build
5+
- deploy
6+
7+
variables:
8+
PROJECT_NAME: hyperf
9+
REGISTRY_URL: registry-docker.org
10+
11+
build_test_docker:
12+
stage: build
13+
before_script:
14+
# - git submodule sync --recursive
15+
# - git submodule update --init --recursive
16+
script:
17+
- docker build . -t $PROJECT_NAME
18+
- docker tag $PROJECT_NAME $REGISTRY_URL/$PROJECT_NAME:test
19+
- docker push $REGISTRY_URL/$PROJECT_NAME:test
20+
only:
21+
- test
22+
tags:
23+
- builder
24+
25+
deploy_test_docker:
26+
stage: deploy
27+
script:
28+
- docker stack deploy -c deploy.test.yml --with-registry-auth $PROJECT_NAME
29+
only:
30+
- test
31+
tags:
32+
- test
33+
34+
build_docker:
35+
stage: build
36+
before_script:
37+
# - git submodule sync --recursive
38+
# - git submodule update --init --recursive
39+
script:
40+
- docker build . -t $PROJECT_NAME
41+
- docker tag $PROJECT_NAME $REGISTRY_URL/$PROJECT_NAME:$CI_COMMIT_REF_NAME
42+
- docker tag $PROJECT_NAME $REGISTRY_URL/$PROJECT_NAME:latest
43+
- docker push $REGISTRY_URL/$PROJECT_NAME:$CI_COMMIT_REF_NAME
44+
- docker push $REGISTRY_URL/$PROJECT_NAME:latest
45+
only:
46+
- tags
47+
tags:
48+
- builder
49+
50+
deploy_docker:
51+
stage: deploy
52+
script:
53+
- echo SUCCESS
54+
only:
55+
- tags
56+
tags:
57+
- builder

.php-cs-fixer.php

+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
/**
5+
* This file is part of Hyperf.
6+
*
7+
* @link https://www.hyperf.io
8+
* @document https://hyperf.wiki
9+
* @contact group@hyperf.io
10+
* @license https://github.com/hyperf/hyperf/blob/master/LICENSE
11+
*/
12+
$header = <<<'EOF'
13+
This file is part of Hyperf.
14+
15+
@link https://www.hyperf.io
16+
@document https://hyperf.wiki
17+
@contact group@hyperf.io
18+
@license https://github.com/hyperf/hyperf/blob/master/LICENSE
19+
EOF;
20+
21+
return (new PhpCsFixer\Config())
22+
->setRiskyAllowed(true)
23+
->setRules([
24+
'@PSR2' => true,
25+
'@Symfony' => true,
26+
'@DoctrineAnnotation' => true,
27+
'@PhpCsFixer' => true,
28+
'header_comment' => [
29+
'comment_type' => 'PHPDoc',
30+
'header' => $header,
31+
'separate' => 'none',
32+
'location' => 'after_declare_strict',
33+
],
34+
'array_syntax' => [
35+
'syntax' => 'short',
36+
],
37+
'list_syntax' => [
38+
'syntax' => 'short',
39+
],
40+
'concat_space' => [
41+
'spacing' => 'one',
42+
],
43+
'global_namespace_import' => [
44+
'import_classes' => true,
45+
'import_constants' => true,
46+
'import_functions' => null,
47+
],
48+
'blank_line_before_statement' => [
49+
'statements' => [
50+
'declare',
51+
],
52+
],
53+
'general_phpdoc_annotation_remove' => [
54+
'annotations' => [
55+
'author',
56+
],
57+
],
58+
'ordered_imports' => [
59+
'imports_order' => [
60+
'class', 'function', 'const',
61+
],
62+
'sort_algorithm' => 'alpha',
63+
],
64+
'single_line_comment_style' => [
65+
'comment_types' => [
66+
],
67+
],
68+
'yoda_style' => [
69+
'always_move_variable' => false,
70+
'equal' => false,
71+
'identical' => false,
72+
],
73+
'phpdoc_align' => [
74+
'align' => 'left',
75+
],
76+
'multiline_whitespace_before_semicolons' => [
77+
'strategy' => 'no_multi_line',
78+
],
79+
'constant_case' => [
80+
'case' => 'lower',
81+
],
82+
'class_attributes_separation' => true,
83+
'combine_consecutive_unsets' => true,
84+
'declare_strict_types' => true,
85+
'linebreak_after_opening_tag' => true,
86+
'lowercase_static_reference' => true,
87+
'no_useless_else' => true,
88+
'no_unused_imports' => true,
89+
'not_operator_with_successor_space' => true,
90+
'not_operator_with_space' => false,
91+
'ordered_class_elements' => true,
92+
'php_unit_strict' => false,
93+
'phpdoc_separation' => false,
94+
'single_quote' => true,
95+
'standardize_not_equals' => true,
96+
'multiline_comment_opening_closing' => true,
97+
])
98+
->setFinder(
99+
PhpCsFixer\Finder::create()
100+
->exclude('public')
101+
->exclude('runtime')
102+
->exclude('vendor')
103+
->in(__DIR__)
104+
)
105+
->setUsingCache(false);

.phpstorm.meta.php

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace PHPSTORM_META {
4+
// Reflect
5+
override(\Psr\Container\ContainerInterface::get(0), map(['' => '@']));
6+
override(\Hyperf\Context\Context::get(0), map(['' => '@']));
7+
override(\make(0), map(['' => '@']));
8+
override(\di(0), map(['' => '@']));
9+
override(\Hyperf\Support\make(0), map(['' => '@']));
10+
override(\Hyperf\Support\optional(0), type(0));
11+
override(\Hyperf\Tappable\tap(0), type(0));
12+
}

Dockerfile

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Default Dockerfile
2+
#
3+
# @link https://www.hyperf.io
4+
# @document https://hyperf.wiki
5+
# @contact group@hyperf.io
6+
# @license https://github.com/hyperf/hyperf/blob/master/LICENSE
7+
8+
FROM hyperf/hyperf:8.0-alpine-v3.16-swoole
9+
LABEL maintainer="Hyperf Developers <group@hyperf.io>" version="1.0" license="MIT" app.name="Hyperf"
10+
11+
##
12+
# ---------- env settings ----------
13+
##
14+
# --build-arg timezone=Asia/Shanghai
15+
ARG timezone
16+
17+
ENV TIMEZONE=${timezone:-"Asia/Shanghai"} \
18+
APP_ENV=prod \
19+
SCAN_CACHEABLE=(true)
20+
21+
# update
22+
RUN set -ex \
23+
# show php version and extensions
24+
&& php -v \
25+
&& php -m \
26+
&& php --ri swoole \
27+
# ---------- some config ----------
28+
&& cd /etc/php* \
29+
# - config PHP
30+
&& { \
31+
echo "upload_max_filesize=128M"; \
32+
echo "post_max_size=128M"; \
33+
echo "memory_limit=1G"; \
34+
echo "date.timezone=${TIMEZONE}"; \
35+
} | tee conf.d/99_overrides.ini \
36+
# - config timezone
37+
&& ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
38+
&& echo "${TIMEZONE}" > /etc/timezone \
39+
# ---------- clear works ----------
40+
&& rm -rf /var/cache/apk/* /tmp/* /usr/share/man \
41+
&& echo -e "\033[42;37m Build Completed :).\033[0m\n"
42+
43+
WORKDIR /opt/www
44+
45+
# Composer Cache
46+
# COPY ./composer.* /opt/www/
47+
# RUN composer install --no-dev --no-scripts
48+
49+
COPY . /opt/www
50+
RUN composer install --no-dev -o && php bin/hyperf.php
51+
52+
EXPOSE 9501
53+
54+
ENTRYPOINT ["php", "/opt/www/bin/hyperf.php", "start"]

README.md

+26-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,26 @@
1-
# grpc-stream-demo
2-
grpc dmeo
1+
# Grpc 全模式演示项目
2+
3+
使用 Hyperf 实现并支持 GRPC 全部姿势(unary、服务端流模式、客户端流模式、双向流模式)
4+
核心插件请移步 https://github.com/crayxn/hyperf-grpc
5+
6+
## Quick Start
7+
8+
### 环境
9+
PHP >=8;需要Swoole支持,可参考 https://learnku.com/articles/77653 搭建
10+
11+
### 运行
12+
```
13+
git clone git@github.com:crayxn/grpc-stream-demo.git
14+
cd grpc-stream-demo
15+
composer install
16+
17+
php bin/hyperf.php start
18+
19+
```
20+
21+
### 测试
22+
打开 Postman,New > GRPC > Using server reflection
23+
24+
![postman-img.png](postman-img.png)
25+
26+
如果对您有帮助,请给个星。谢谢

app/Grpc/Demo/DemoSrv/DemoSrvInterface.php

+45
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)