Browse Source

[Ubiquity] update workerman to PHP8 (#6312)

* fix workerman-pgsql

* add jit

* add jit in php.ini

* fix 7.4 omitted

* fix workerman-mysql

* fix workerman-mongodb

* force update

* Update ubiquity-workerman-mongo.dockerfile

* add workerman-raw

* tag roadrunner as broken
J-C HERON 4 years ago
parent
commit
0f93e20a4d

+ 31 - 8
frameworks/PHP/ubiquity/benchmark_config.json

@@ -15,7 +15,7 @@
         "database": "MySQL",
         "framework": "ubiquity",
         "language": "PHP",
-        "flavor": "PHP7",
+        "flavor": "PHP8",
         "orm": "Full",
         "platform": "FPM/FastCGI",
         "webserver": "nginx",
@@ -26,8 +26,6 @@
         "versus": "php"
       },
       "workerman": {
-        "json_url": "/Json_",
-        "plaintext_url": "/Plaintext_",
         "db_url": "/Db_",
         "query_url": "/Db_/query/",
         "fortune_url": "/Fortunes_",
@@ -39,7 +37,7 @@
         "database": "Postgres",
         "framework": "Ubiquity",
         "language": "PHP",
-        "flavor": "PHP7",
+        "flavor": "PHP8",
         "orm": "Full",
         "platform": "workerman",
         "webserver": "none",
@@ -114,7 +112,8 @@
         "database_os": "Linux",
         "display_name": "ubiquity-roadrunner",
         "notes": "",
-        "versus": "php"
+        "versus": "php",
+        "tags": ["broken"]
       },
       "roadrunner-mysql": {
         "db_url": "/DbMy",
@@ -135,7 +134,8 @@
         "database_os": "Linux",
         "display_name": "ubiquity-roadrunner-mysql",
         "notes": "",
-        "versus": "php"
+        "versus": "php",
+        "tags": ["broken"]
       },
       "workerman-mysql": {
         "db_url": "/DbMy",
@@ -148,7 +148,7 @@
         "database": "Mysql",
         "framework": "Ubiquity",
         "language": "PHP",
-        "flavor": "PHP7",
+        "flavor": "PHP8",
         "orm": "Full",
         "platform": "workerman",
         "webserver": "none",
@@ -169,7 +169,7 @@
         "database": "MongoDB",
         "framework": "Ubiquity",
         "language": "PHP",
-        "flavor": "PHP7",
+        "flavor": "PHP8",
         "orm": "Full",
         "platform": "workerman",
         "webserver": "none",
@@ -179,6 +179,29 @@
         "notes": "",
         "versus": "php"
       },
+      "workerman-raw": {
+        "json_url": "/Json_",
+        "plaintext_url": "/Plaintext_",
+        "db_url": "/DbRaw",
+        "query_url": "/DbRaw/query/",
+        "fortune_url": "/FortunesRaw",
+        "update_url": "/DbRaw/update/",
+        "port": 8080,
+        "approach": "Realistic",
+        "classification": "Fullstack",
+        "database": "Postgres",
+        "framework": "Ubiquity",
+        "language": "PHP",
+        "flavor": "PHP8",
+        "orm": "raw",
+        "platform": "workerman",
+        "webserver": "none",
+        "os": "Linux",
+        "database_os": "Linux",
+        "display_name": "ubiquity-workerman-raw",
+        "notes": "",
+        "versus": "workerman"
+      },
       "ngx": {
         "json_url": "/Json_",
         "plaintext_url": "/Plaintext_",

+ 1 - 1
frameworks/PHP/ubiquity/composer.json

@@ -5,7 +5,7 @@
 	},
 	"require-dev" : {
 		"monolog/monolog" : "^1.24",
-		"mindplay/annotations" : "^1.3"
+		"phpmv/ubiquity-annotations" : "^0.0"
 	},
 	"autoload" : {
 		"psr-4" : {

+ 17 - 2
frameworks/PHP/ubiquity/config.toml

@@ -85,8 +85,6 @@ webserver = "nginx"
 versus = "ngx_php"
 
 [workerman]
-urls.plaintext = "/Plaintext_"
-urls.json = "/Json_"
 urls.db = "/Db_"
 urls.query = "/Db_/query/"
 urls.update = "/Db_/update/"
@@ -132,6 +130,23 @@ platform = "workerman"
 webserver = "none"
 versus = "php"
 
+[workerman-raw]
+urls.plaintext = "/Plaintext_"
+urls.json = "/Json_"
+urls.db = "/DbRaw"
+urls.query = "/DbRaw/query/"
+urls.update = "/DbRaw/update/"
+urls.fortune = "/FortunesRaw"
+approach = "Realistic"
+classification = "Fullstack"
+database = "Postgres"
+database_os = "Linux"
+os = "Linux"
+orm = "raw"
+platform = "workerman"
+webserver = "none"
+versus = "php"
+
 [swoole-mysql]
 urls.db = "/DbMy"
 urls.query = "/DbMy/query/"

+ 15 - 0
frameworks/PHP/ubiquity/deploy/conf/workerman/pgsql/raw/workerServices.php

@@ -0,0 +1,15 @@
+<?php
+\Ubiquity\cache\CacheManager::startProd($config);
+
+\Ubiquity\cache\CacheManager::warmUpControllers([
+	\controllers\Plaintext_::class,
+	\controllers\Json_::class,
+	\controllers\DbRaw::class,
+	\controllers\FortunesRaw::class
+]);
+
+$workerServer->onWorkerStart = function () use ($config) {
+	$db = \Ubiquity\db\Database::start('pgsql', $config);
+	\controllers\DbRaw::warmup($db);
+	\controllers\FortunesRaw::warmup($db);
+};

+ 0 - 3
frameworks/PHP/ubiquity/deploy/conf/workerman/pgsql/workerServices.php

@@ -13,8 +13,6 @@ echo "Loading worlds\n";
 echo "End Loading\n";
 
 \Ubiquity\cache\CacheManager::warmUpControllers([
-	\controllers\Plaintext_::class,
-	\controllers\Json_::class,
 	\controllers\Db_::class,
 	\controllers\Fortunes_::class,
 	\controllers\Cache::class
@@ -25,4 +23,3 @@ $workerServer->onWorkerStart = function () use ($config) {
 	\controllers\Db_::warmup();
 	\controllers\Fortunes_::warmup();
 };
-

+ 7 - 7
frameworks/PHP/ubiquity/ubiquity-workerman-mongo.dockerfile

@@ -1,20 +1,19 @@
   
-FROM ubuntu:20.04
+FROM ubuntu:20.10
 
 ARG DEBIAN_FRONTEND=noninteractive
 
 RUN apt-get update -yqq && apt-get install -yqq software-properties-common > /dev/null
 RUN LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
 RUN apt-get update -yqq > /dev/null && \
-    apt-get install -yqq php7.4 php7.4-common php7.4-cli php7.4-mongodb > /dev/null
+    apt-get install -yqq git php8.0-cli php8.0-mongodb php8.0-xml > /dev/null
 
 RUN apt-get install -yqq composer > /dev/null
 
-RUN apt-get install -y php-pear php-dev libevent-dev > /dev/null
+RUN apt-get install -y php-pear php8.0-dev libevent-dev > /dev/null
+RUN pecl install event-3.0.2 > /dev/null && echo "extension=event.so" > /etc/php/8.0/cli/conf.d/event.ini
 
-RUN printf "\n\n /usr/lib/x86_64-linux-gnu/\n\n\nno\n\n\n" | pecl install event > /dev/null && echo "extension=event.so" > /etc/php/7.4/cli/conf.d/event.ini
-
-COPY deploy/conf/php-async.ini /etc/php/7.4/cli/php.ini
+COPY deploy/conf/php-async.ini /etc/php/8.0/cli/php.ini
 
 ADD ./ /ubiquity
 
@@ -37,7 +36,8 @@ RUN chmod 777 -R /ubiquity/.ubiquity/*
 
 COPY deploy/conf/workerman/mongo/workerServices.php app/config/workerServices.php
 
-RUN echo "opcache.preload=/ubiquity/app/config/preloader.script.php" >> /etc/php/7.4/cli/php.ini
+RUN echo "opcache.preload=/ubiquity/app/config/preloader.script.php" >> /etc/php/8.0/cli/php.ini
+RUN echo "opcache.jit_buffer_size=128M\nopcache.jit=tracing\n" >> /etc/php/8.0/cli/php.ini
 
 EXPOSE 8080
 

+ 7 - 7
frameworks/PHP/ubiquity/ubiquity-workerman-mysql.dockerfile

@@ -1,19 +1,18 @@
-  
-FROM ubuntu:20.04
+FROM ubuntu:20.10
 
 ARG DEBIAN_FRONTEND=noninteractive
 
 RUN apt-get update -yqq && apt-get install -yqq software-properties-common > /dev/null
 RUN LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
 RUN apt-get update -yqq > /dev/null && \
-    apt-get install -yqq php7.4 php7.4-common php7.4-cli php7.4-mysql > /dev/null
+    apt-get install -yqq git php8.0-cli php8.0-mysql php8.0-xml > /dev/null
 
 RUN apt-get install -yqq composer > /dev/null
 
-RUN apt-get install -y php-pear php-dev libevent-dev > /dev/null
-RUN printf "\n\n /usr/lib/x86_64-linux-gnu/\n\n\nno\n\n\n" | pecl install event > /dev/null && echo "extension=event.so" > /etc/php/7.4/cli/conf.d/event.ini
+RUN apt-get install -y php-pear php8.0-dev libevent-dev > /dev/null
+RUN pecl install event-3.0.2 > /dev/null && echo "extension=event.so" > /etc/php/8.0/cli/conf.d/event.ini
 
-COPY deploy/conf/php-async.ini /etc/php/7.4/cli/php.ini
+COPY deploy/conf/php-async.ini /etc/php/8.0/cli/php.ini
 
 ADD ./ /ubiquity
 WORKDIR /ubiquity
@@ -35,7 +34,8 @@ RUN chmod 777 -R /ubiquity/.ubiquity/*
 
 COPY deploy/conf/workerman/mysql/workerServices.php app/config/workerServices.php
 
-RUN echo "opcache.preload=/ubiquity/app/config/preloader.script.php" >> /etc/php/7.4/cli/php.ini
+RUN echo "opcache.preload=/ubiquity/app/config/preloader.script.php" >> /etc/php/8.0/cli/php.ini
+RUN echo "opcache.jit_buffer_size=128M\nopcache.jit=tracing\n" >> /etc/php/8.0/cli/php.ini
 
 EXPOSE 8080
 

+ 43 - 0
frameworks/PHP/ubiquity/ubiquity-workerman-raw.dockerfile

@@ -0,0 +1,43 @@
+  
+FROM ubuntu:20.10
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update -yqq && apt-get install -yqq software-properties-common > /dev/null
+RUN LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
+RUN apt-get update -yqq > /dev/null && \
+    apt-get install -yqq git php8.0-cli php8.0-pgsql php8.0-xml > /dev/null
+
+RUN apt-get install -yqq composer > /dev/null
+
+RUN apt-get install -y php-pear php8.0-dev libevent-dev > /dev/null
+RUN pecl install event-3.0.2 > /dev/null && echo "extension=event.so" > /etc/php/8.0/cli/conf.d/event.ini
+
+COPY deploy/conf/php-async.ini /etc/php/8.0/cli/php.ini
+
+ADD ./ /ubiquity
+WORKDIR /ubiquity
+
+RUN chmod -R 777 /ubiquity
+
+RUN ["chmod", "+x", "deploy/run/install-composer.sh"]
+
+RUN deploy/run/install-composer.sh
+
+RUN apt-get update -yqq > /dev/null && \
+    apt-get install -yqq git unzip > /dev/null
+
+RUN php composer.phar require phpmv/ubiquity-devtools:dev-master phpmv/ubiquity-workerman:dev-master --quiet
+
+RUN php composer.phar install --optimize-autoloader --classmap-authoritative --no-dev --quiet
+
+RUN chmod 777 -R /ubiquity/.ubiquity/*
+
+COPY deploy/conf/workerman/pgsql/raw/workerServices.php app/config/workerServices.php
+
+RUN echo "opcache.preload=/ubiquity/app/config/preloader.script.php\n" >> /etc/php/8.0/cli/php.ini
+RUN echo "opcache.jit_buffer_size=128M\nopcache.jit=tracing\n" >> /etc/php/8.0/cli/php.ini
+
+EXPOSE 8080
+
+CMD /ubiquity/vendor/bin/Ubiquity serve -t=workerman -p=8080 -h=0.0.0.0

+ 7 - 6
frameworks/PHP/ubiquity/ubiquity-workerman.dockerfile

@@ -1,19 +1,19 @@
   
-FROM ubuntu:20.04
+FROM ubuntu:20.10
 
 ARG DEBIAN_FRONTEND=noninteractive
 
 RUN apt-get update -yqq && apt-get install -yqq software-properties-common > /dev/null
 RUN LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
 RUN apt-get update -yqq > /dev/null && \
-    apt-get install -yqq php7.4 php7.4-common php7.4-cli php7.4-pgsql > /dev/null
+    apt-get install -yqq git php8.0-cli php8.0-pgsql php8.0-xml > /dev/null
 
 RUN apt-get install -yqq composer > /dev/null
 
-RUN apt-get install -y php-pear php-dev libevent-dev > /dev/null
-RUN printf "\n\n /usr/lib/x86_64-linux-gnu/\n\n\nno\n\n\n" | pecl install event > /dev/null && echo "extension=event.so" > /etc/php/7.4/cli/conf.d/event.ini
+RUN apt-get install -y php-pear php8.0-dev libevent-dev > /dev/null
+RUN pecl install event-3.0.2 > /dev/null && echo "extension=event.so" > /etc/php/8.0/cli/conf.d/event.ini
 
-COPY deploy/conf/php-async.ini /etc/php/7.4/cli/php.ini
+COPY deploy/conf/php-async.ini /etc/php/8.0/cli/php.ini
 
 ADD ./ /ubiquity
 WORKDIR /ubiquity
@@ -35,7 +35,8 @@ RUN chmod 777 -R /ubiquity/.ubiquity/*
 
 COPY deploy/conf/workerman/pgsql/workerServices.php app/config/workerServices.php
 
-RUN echo "opcache.preload=/ubiquity/app/config/preloader.script.php" >> /etc/php/7.4/cli/php.ini
+RUN echo "opcache.preload=/ubiquity/app/config/preloader.script.php\n" >> /etc/php/8.0/cli/php.ini
+RUN echo "opcache.jit_buffer_size=128M\nopcache.jit=function\n" >> /etc/php/8.0/cli/php.ini
 
 EXPOSE 8080