diff --git a/frameworks/PHP/hamlet/.gitignore b/frameworks/PHP/hamlet/.gitignore deleted file mode 100644 index d1502b087b4..00000000000 --- a/frameworks/PHP/hamlet/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -vendor/ -composer.lock diff --git a/frameworks/PHP/hamlet/Benchmark/Application.php b/frameworks/PHP/hamlet/Benchmark/Application.php deleted file mode 100644 index f4cc693e55a..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Application.php +++ /dev/null @@ -1,45 +0,0 @@ -getPath()) { - case '/plaintext': - return new HelloTextResource; - case '/json': - return new HelloJsonResource; - case '/db': - return new DbResource($this->database); - case '/queries': - return new QueriesResource($this->database); - case '/cached-worlds': - return new CachedQueriesResource($this->getCache($request), $this->database); - case '/fortunes': - return new FortuneResource($this->database); - case '/update': - return new UpdateResource($this->database); - } - return new NotFoundResource; - } - - protected function getCache(Request $request): CacheItemPoolInterface - { - if (!$this->cache) { - $this->cache = new ApcuCachePool; - } - return $this->cache; - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Entities/FortuneEntity.php b/frameworks/PHP/hamlet/Benchmark/Entities/FortuneEntity.php deleted file mode 100644 index fbdbbb27809..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Entities/FortuneEntity.php +++ /dev/null @@ -1,27 +0,0 @@ - $this->messages - ]; - } - - protected function getTemplatePath(): string - { - return __DIR__ . '/fortune.mustache'; - } - - public function getKey(): string - { - return md5(var_export($this->messages, true)); - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Entities/Message.php b/frameworks/PHP/hamlet/Benchmark/Entities/Message.php deleted file mode 100644 index c078b1b6d01..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Entities/Message.php +++ /dev/null @@ -1,29 +0,0 @@ -id; - } - - public function message(): string - { - return $this->message; - } - - public function jsonSerialize(): array - { - return [ - 'id' => $this->id, - 'message' => $this->message - ]; - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Entities/RandomNumber.php b/frameworks/PHP/hamlet/Benchmark/Entities/RandomNumber.php deleted file mode 100644 index 669f6ce773d..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Entities/RandomNumber.php +++ /dev/null @@ -1,34 +0,0 @@ -id; - } - - public function number(): int - { - return $this->randomNumber; - } - - public function withNumber(int $number): self - { - return new self($this->id, $number); - } - - public function jsonSerialize(): array - { - return [ - 'id' => $this->id, - 'randomNumber' => $this->randomNumber - ]; - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Entities/fortune.mustache b/frameworks/PHP/hamlet/Benchmark/Entities/fortune.mustache deleted file mode 100644 index 20265b750a3..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Entities/fortune.mustache +++ /dev/null @@ -1,18 +0,0 @@ - - -Fortunes - - - - - - - {{# messages }} - - - - - {{/ messages }} -
idmessage
{{ id }}{{ message }}
- - diff --git a/frameworks/PHP/hamlet/Benchmark/Repositories/FortuneRepository.php b/frameworks/PHP/hamlet/Benchmark/Repositories/FortuneRepository.php deleted file mode 100644 index a2044cab081..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Repositories/FortuneRepository.php +++ /dev/null @@ -1,21 +0,0 @@ - - */ - public function findAll(): callable - { - return fn (Session $session) => - $session->prepare('SELECT id, message FROM Fortune') - ->processAll() - ->selectAll()->cast(Message::class) - ->collectAll(); - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Repositories/WorldRepository.php b/frameworks/PHP/hamlet/Benchmark/Repositories/WorldRepository.php deleted file mode 100644 index 003a4dc7a19..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Repositories/WorldRepository.php +++ /dev/null @@ -1,34 +0,0 @@ - - $session->prepare('SELECT id, randomNumber FROM World WHERE id = ?') - ->bindInteger($id) - ->processOne() - ->selectAll()->cast(RandomNumber::class) - ->collectHead(); - } - - /** - * @return callable(Session):void - */ - public function updateNumber(RandomNumber $number): callable - { - return fn (Session $session) => - $session->prepare('UPDATE World SET randomNumber = ? WHERE id = ?') - ->bindInteger($number->number()) - ->bindInteger($number->id()) - ->execute(); - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Resources/CachedQueriesResource.php b/frameworks/PHP/hamlet/Benchmark/Resources/CachedQueriesResource.php deleted file mode 100644 index 715deacfe65..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Resources/CachedQueriesResource.php +++ /dev/null @@ -1,30 +0,0 @@ -getQueriesCount($request); - $key = 'count.' . $count; - $item = $this->cache->getItem($key); - if ($item->isHit()) { - return $item->get(); - } - $response = parent::getResponse($request); - $this->cache->save(new CacheItem($key, true, $response)); - return $response; - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Resources/DbResource.php b/frameworks/PHP/hamlet/Benchmark/Resources/DbResource.php deleted file mode 100644 index 2ef8ea8ce35..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Resources/DbResource.php +++ /dev/null @@ -1,23 +0,0 @@ -database->withSession($repository->findById($id)); - return new SimpleOKResponse(new JsonEntity($record)); - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Resources/FortuneResource.php b/frameworks/PHP/hamlet/Benchmark/Resources/FortuneResource.php deleted file mode 100644 index 48540164488..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Resources/FortuneResource.php +++ /dev/null @@ -1,23 +0,0 @@ -database->withSession($repository->findAll()); - $messages[] = new Message(0, 'Additional fortune added at request time.'); - usort($messages, function (Message $a, Message $b): int { - return $a->message() <=> $b->message(); - }); - return new SimpleOKResponse(new FortuneEntity($messages)); - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Resources/HelloJsonResource.php b/frameworks/PHP/hamlet/Benchmark/Resources/HelloJsonResource.php deleted file mode 100644 index 095c5cd77b7..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Resources/HelloJsonResource.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Hello, World!']); - return new SimpleOKResponse($entity); - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Resources/HelloTextResource.php b/frameworks/PHP/hamlet/Benchmark/Resources/HelloTextResource.php deleted file mode 100644 index 3a1531288d7..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Resources/HelloTextResource.php +++ /dev/null @@ -1,17 +0,0 @@ -hasQueryParam('queries')) { - $count = $request->getQueryParam('queries', _int()); - if ($count < 1) { - return 1; - } elseif (500 < $count) { - return 500; - } else { - return $count; - } - } else { - return 1; - } - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Resources/QueriesResource.php b/frameworks/PHP/hamlet/Benchmark/Resources/QueriesResource.php deleted file mode 100644 index b4999592096..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Resources/QueriesResource.php +++ /dev/null @@ -1,24 +0,0 @@ -getQueriesCount($request); - $payload = $this->database->withSessions(array_map( - fn () => $repository->findById(mt_rand(1, 10000)), - range(1, $count) - )); - return new SimpleOKResponse(new JsonEntity($payload)); - } -} diff --git a/frameworks/PHP/hamlet/Benchmark/Resources/UpdateResource.php b/frameworks/PHP/hamlet/Benchmark/Resources/UpdateResource.php deleted file mode 100644 index e6e1b79bcc6..00000000000 --- a/frameworks/PHP/hamlet/Benchmark/Resources/UpdateResource.php +++ /dev/null @@ -1,32 +0,0 @@ -getQueriesCount($request); - $entries = $this->database->withSessions(array_map( - fn () => $repository->findById(mt_rand(1, 10000)), - range(1, $count), - )); - $modifiedEntries = array_map( - fn ($entry) => $entry->withNumber(mt_rand(1, 10000)), - $entries - ); - $this->database->withSessions(array_map( - fn ($modifiedEntry) => $repository->updateNumber($modifiedEntry), - $modifiedEntries - )); - return new SimpleOKResponse(new JsonEntity($modifiedEntries)); - } -} diff --git a/frameworks/PHP/hamlet/README.md b/frameworks/PHP/hamlet/README.md deleted file mode 100644 index 7c7c35cfc21..00000000000 --- a/frameworks/PHP/hamlet/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Hamlet Framework Benchmarking Test - -This is the [Hamlet Framework](https://github.com/hamlet-framework) portion of a [benchmarking test suite](../) - -Current submission tests the following configurations: - -- Hamlet -- Hamlet + Swoole -- Hamlet + Workerman diff --git a/frameworks/PHP/hamlet/benchmark_config.json b/frameworks/PHP/hamlet/benchmark_config.json deleted file mode 100644 index b8fda2f4f31..00000000000 --- a/frameworks/PHP/hamlet/benchmark_config.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "framework": "hamlet", - "tests": [{ - "default": { - "plaintext_url": "/plaintext", - "json_url": "/json", - "db_url": "/db", - "query_url": "/queries?queries=", - "cached_query_url": "/cached-worlds?queries=", - "fortune_url": "/fortunes", - "update_url": "/update?queries=", - "port": 8080, - "approach": "Realistic", - "classification": "Fullstack", - "database": "mysql", - "framework": "hamlet", - "language": "PHP", - "flavor": "PHP8.1", - "orm": "micro", - "platform": "FPM/FastCGI", - "webserver": "nginx", - "os": "Linux", - "database_os": "Linux", - "display_name": "hamlet", - "notes": "", - "versus": "php", - "tags": ["broken"] - }, - "swoole": { - "plaintext_url": "/plaintext", - "json_url": "/json", - "db_url": "/db", - "query_url": "/queries?queries=", - "cached_query_url": "/cached-worlds?queries=", - "fortune_url": "/fortunes", - "update_url": "/update?queries=", - "port": 8080, - "approach": "Realistic", - "classification": "Fullstack", - "database": "mysql", - "framework": "hamlet", - "language": "PHP", - "flavor": "PHP8", - "orm": "micro", - "platform": "swoole", - "webserver": "none", - "os": "Linux", - "database_os": "Linux", - "display_name": "hamlet-swoole", - "notes": "", - "versus": "swoole", - "tags": ["broken"] - }, - "workerman": { - "plaintext_url": "/plaintext", - "json_url": "/json", - "db_url": "/db", - "query_url": "/queries?queries=", - "cached_query_url": "/cached-worlds?queries=", - "fortune_url": "/fortunes", - "update_url": "/update?queries=", - "port": 8080, - "approach": "Realistic", - "classification": "Fullstack", - "database": "mysql", - "framework": "hamlet", - "language": "PHP", - "flavor": "PHP8", - "orm": "micro", - "platform": "workerman", - "webserver": "none", - "os": "Linux", - "database_os": "Linux", - "display_name": "hamlet-workerman", - "notes": "", - "versus": "workerman", - "tags": ["broken"] - } - }] -} diff --git a/frameworks/PHP/hamlet/composer-swoole.json b/frameworks/PHP/hamlet/composer-swoole.json deleted file mode 100644 index edf1d00158e..00000000000 --- a/frameworks/PHP/hamlet/composer-swoole.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "config": { - "optimize-autoloader": true, - "classmap-authoritative": true - }, - "require": { - "php": "^8", - "hamlet-framework/http" : "@stable", - "hamlet-framework/http-swoole": "@stable", - "hamlet-framework/db-mysql-swoole": "@stable", - "cache/array-adapter": "@stable" - }, - "autoload": { - "psr-4": { - "Benchmark\\": "Benchmark/" - } - } -} diff --git a/frameworks/PHP/hamlet/composer-workerman.json b/frameworks/PHP/hamlet/composer-workerman.json deleted file mode 100644 index de39b11968c..00000000000 --- a/frameworks/PHP/hamlet/composer-workerman.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "config": { - "optimize-autoloader": true, - "classmap-authoritative": true - }, - "require": { - "php": "^8", - "hamlet-framework/http" : "@stable", - "hamlet-framework/http-workerman": "@stable", - "hamlet-framework/db-pdo": "@stable", - "cache/array-adapter": "@stable" - }, - "autoload": { - "psr-4": { - "Benchmark\\": "Benchmark/" - } - } -} diff --git a/frameworks/PHP/hamlet/composer.json b/frameworks/PHP/hamlet/composer.json deleted file mode 100644 index 2a8d4f7ec0e..00000000000 --- a/frameworks/PHP/hamlet/composer.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "config": { - "optimize-autoloader": true, - "classmap-authoritative": true - }, - "require": { - "php": "^8", - "hamlet-framework/http" : "@stable", - "hamlet-framework/db-pdo": "@stable", - "cache/apcu-adapter": "@stable" - }, - "autoload": { - "psr-4": { - "Benchmark\\": "Benchmark/" - } - } -} diff --git a/frameworks/PHP/hamlet/config.toml b/frameworks/PHP/hamlet/config.toml deleted file mode 100644 index 81b9f6f2509..00000000000 --- a/frameworks/PHP/hamlet/config.toml +++ /dev/null @@ -1,54 +0,0 @@ -[framework] -name = "hamlet" - -[main] -urls.plaintext = "/plaintext" -urls.json = "/json" -urls.db = "/db" -urls.query = "/queries?queries=" -urls.cached_query = "/cached-worlds?queries=" -urls.update = "/update?queries=" -urls.fortune = "/fortunes" -approach = "Realistic" -classification = "Fullstack" -database = "mysql" -database_os = "Linux" -os = "Linux" -orm = "micro" -platform = "FPM/FastCGI" -webserver = "nginx" -versus = "php" - -[workerman] -urls.plaintext = "/plaintext" -urls.json = "/json" -urls.db = "/db" -urls.query = "/queries?queries=" -urls.update = "/update?queries=" -urls.fortune = "/fortunes" -approach = "Realistic" -classification = "Fullstack" -database = "mysql" -database_os = "Linux" -os = "Linux" -orm = "micro" -platform = "workerman" -webserver = "none" -versus = "workerman" - -[swoole] -urls.plaintext = "/plaintext" -urls.json = "/json" -urls.db = "/db" -urls.query = "/queries?queries=" -urls.update = "/update?queries=" -urls.fortune = "/fortunes" -approach = "Realistic" -classification = "Fullstack" -database = "mysql" -database_os = "Linux" -os = "Linux" -orm = "micro" -platform = "swoole" -webserver = "none" -versus = "swoole" diff --git a/frameworks/PHP/hamlet/deploy/fpm/nginx.conf b/frameworks/PHP/hamlet/deploy/fpm/nginx.conf deleted file mode 100644 index 313fc4d26a9..00000000000 --- a/frameworks/PHP/hamlet/deploy/fpm/nginx.conf +++ /dev/null @@ -1,62 +0,0 @@ -user www-data; -worker_processes auto; -error_log stderr error; -worker_rlimit_nofile 200000; - -events { - worker_connections 32768; - multi_accept on; -} - -http { - access_log off; - server_tokens off; - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - keepalive_disable none; - keepalive_requests 1000; - - #the bench don't use any static file - #open_file_cache max=2000 inactive=20s; - #open_file_cache_valid 60s; - #open_file_cache_min_uses 5; - #open_file_cache_errors off; - - fastcgi_buffers 256 16k; - fastcgi_buffer_size 128k; - fastcgi_connect_timeout 120s; - fastcgi_send_timeout 120s; - fastcgi_read_timeout 120s; - fastcgi_busy_buffers_size 256k; - fastcgi_temp_file_write_size 256k; - reset_timedout_connection on; - server_names_hash_bucket_size 100; - - upstream fastcgi_backend { - server unix:/var/run/php-fpm.sock; - keepalive 40; - } - - server { - listen 8080; - server_name localhost; - - root /app; - index index.php; - - location / { - try_files $uri $uri/ /index.php?$uri&$args; - } - - location ~ \.php$ { - fastcgi_pass fastcgi_backend; - fastcgi_keep_conn on; - fastcgi_index index.php; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - include /etc/nginx/fastcgi_params; - } - } -} diff --git a/frameworks/PHP/hamlet/deploy/fpm/php-fpm.conf b/frameworks/PHP/hamlet/deploy/fpm/php-fpm.conf deleted file mode 100644 index bf0d342c46e..00000000000 --- a/frameworks/PHP/hamlet/deploy/fpm/php-fpm.conf +++ /dev/null @@ -1,17 +0,0 @@ -[global] -pid = /var/run/php-fpm.pid -error_log = /dev/stderr -systemd_interval = 0 - -[www] -user = www-data -group = www-data -listen = /var/run/php-fpm.sock -listen.backlog = 65535 -listen.owner = www-data -listen.group = www-data -pm = static -pm.max_children = 1024 -pm.start_servers = 512 -pm.min_spare_servers = 50 -pm.max_spare_servers = 512 diff --git a/frameworks/PHP/hamlet/deploy/fpm/php.ini b/frameworks/PHP/hamlet/deploy/fpm/php.ini deleted file mode 100644 index 498eb1221b6..00000000000 --- a/frameworks/PHP/hamlet/deploy/fpm/php.ini +++ /dev/null @@ -1,21 +0,0 @@ -opcache.enable_file_override = 1 -opcache.memory_consumption = 96 -opcache.interned_strings_buffer = 16 -opcache.max_accelerated_files = 10000 -opcache.save_comments = 1 -opcache.consistency_checks = 0 -opcache.enable = 1 -opcache.enable_cli=1 -opcache.optimization_level = 0xFFFFFFFF -opcache.huge_code_pages = 0 -opcache.validate_timestamps = 0 -opcache.jit_buffer_size = 128M -opcache.jit = 1255 - -realpath_cache_ttl = 1200 -memory_limit = 512M - -display_errors = 0 -error_reporting = E_ALL -zend.assertions = 0 -assert.exception = 0 diff --git a/frameworks/PHP/hamlet/hamlet-swoole.dockerfile b/frameworks/PHP/hamlet/hamlet-swoole.dockerfile deleted file mode 100644 index a1133c483ae..00000000000 --- a/frameworks/PHP/hamlet/hamlet-swoole.dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM php:8.0 - -RUN pecl install swoole > /dev/null && \ - docker-php-ext-enable swoole - -RUN docker-php-ext-install mysqli > /dev/null && \ - docker-php-ext-enable mysqli - -RUN apt-get update -yqq && \ - apt-get install -yqq git unzip - -COPY ./deploy/fpm/php.ini /usr/local/etc/php/conf.d/hamlet.ini - -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -ADD ./ /php -WORKDIR /php -COPY ./composer-swoole.json composer.json -RUN chmod -R 777 /php - -RUN composer update --no-dev --quiet - -EXPOSE 8080 - -CMD php /php/swoole.php diff --git a/frameworks/PHP/hamlet/hamlet-workerman.dockerfile b/frameworks/PHP/hamlet/hamlet-workerman.dockerfile deleted file mode 100644 index e632ee1dd8a..00000000000 --- a/frameworks/PHP/hamlet/hamlet-workerman.dockerfile +++ /dev/null @@ -1,36 +0,0 @@ -FROM php:8.0-zts - -ENV PHP_VERSION 8.0 -ENV PARALLEL_VERSION 360c667b7632a639a983f17c5d97b92cbe4f7c95 - -RUN docker-php-ext-install pdo_mysql > /dev/null && docker-php-ext-enable pdo_mysql -RUN docker-php-ext-install sockets > /dev/null && docker-php-ext-enable sockets -RUN docker-php-ext-install pcntl > /dev/null && docker-php-ext-enable pcntl - -RUN apt-get update -yqq > /dev/null \ - && apt-get install -yqq git unzip libevent-dev libssl-dev > /dev/null - -RUN git clone https://github.com/krakjoe/parallel \ - && cd parallel \ - && git checkout 360c667b7632a639a983f17c5d97b92cbe4f7c95 \ - && phpize > /dev/null \ - && ./configure --enable-parallel > /dev/null \ - && make > /dev/null \ - && make install > /dev/null - -RUN pecl install event-3.0.5 > /dev/null \ - && echo "extension=event.so" > /usr/local/etc/php/conf.d/event.ini - -COPY deploy/fpm/php.ini /usr/local/etc/php/conf.d/hamlet.ini - -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -ADD ./ /hamlet -WORKDIR /hamlet -COPY ./composer-workerman.json composer.json - -RUN composer update --no-dev --quiet - -EXPOSE 8080 - -CMD php /hamlet/workerman.php start diff --git a/frameworks/PHP/hamlet/hamlet.dockerfile b/frameworks/PHP/hamlet/hamlet.dockerfile deleted file mode 100644 index 9c85515a040..00000000000 --- a/frameworks/PHP/hamlet/hamlet.dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM ubuntu:20.04 - -ENV PHP_VERSION 8.1 -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 nginx git unzip curl \ - php${PHP_VERSION}-cli php${PHP_VERSION}-fpm php${PHP_VERSION}-apcu php${PHP_VERSION}-pdo-mysql php${PHP_VERSION}-dev > /dev/null - -COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer - -ADD ./ /app -WORKDIR /app - -RUN composer update --no-dev --quiet - -COPY deploy/fpm/php-fpm.conf /etc/php/${PHP_VERSION}/fpm/php-fpm.conf -COPY deploy/fpm/php.ini /etc/php/${PHP_VERSION}/fpm/php.ini - -RUN if [ $(nproc) = 2 ]; then sed -i "s|pm.max_children = 1024|pm.max_children = 512|g" /etc/php/${PHP_VERSION}/fpm/php-fpm.conf ; fi; - -EXPOSE 8080 - -CMD service php${PHP_VERSION}-fpm start \ - && nginx -c /app/deploy/fpm/nginx.conf -g "daemon off;" diff --git a/frameworks/PHP/hamlet/index.php b/frameworks/PHP/hamlet/index.php deleted file mode 100644 index 09141793d1b..00000000000 --- a/frameworks/PHP/hamlet/index.php +++ /dev/null @@ -1,15 +0,0 @@ -