From d87cdc64d580e7716f69cb4bb1bd0a5519ff951c Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 14 Oct 2024 22:12:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=20email?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw5/.gitignore | 2 - hw5/README.md | 22 ------- hw5/code/app.php | 13 ---- hw5/code/composer.json | 15 ----- hw5/code/composer.lock | 18 ------ hw5/code/src/App.php | 34 ---------- hw5/code/src/Client.php | 72 ---------------------- hw5/code/src/Server.php | 66 -------------------- hw5/code/src/Utils.php | 18 ------ hw5/code/src/config/config.ini.example.php | 5 -- hw5/code/src/config/config.ini.php | 5 -- hw5/docker-compose.yaml | 38 ------------ hw5/fpm/Dockerfile | 34 ---------- hw5/fpm/php.ini | 1 - 14 files changed, 343 deletions(-) delete mode 100644 hw5/.gitignore delete mode 100644 hw5/README.md delete mode 100644 hw5/code/app.php delete mode 100644 hw5/code/composer.json delete mode 100644 hw5/code/composer.lock delete mode 100644 hw5/code/src/App.php delete mode 100644 hw5/code/src/Client.php delete mode 100644 hw5/code/src/Server.php delete mode 100644 hw5/code/src/Utils.php delete mode 100644 hw5/code/src/config/config.ini.example.php delete mode 100644 hw5/code/src/config/config.ini.php delete mode 100644 hw5/docker-compose.yaml delete mode 100644 hw5/fpm/Dockerfile delete mode 100644 hw5/fpm/php.ini diff --git a/hw5/.gitignore b/hw5/.gitignore deleted file mode 100644 index 53ef5789a..000000000 --- a/hw5/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -code/vendor -hw4 \ No newline at end of file diff --git a/hw5/README.md b/hw5/README.md deleted file mode 100644 index 9476a70b9..000000000 --- a/hw5/README.md +++ /dev/null @@ -1,22 +0,0 @@ -Init Docker - -- cd config && cp config.ini.example.php config.ini.php -- cd ../ -- docker-compose up --build -d -- docker exec -it php-server bash -- composer install -- exit; - -Работа с приложением -Start Server - -- docker exec -it php-server bash -- cd mysite.local -- php app.php server - -Start Client - -- docker exec -it php-client bash -- cd mysite.local -- php app.php client - diff --git a/hw5/code/app.php b/hw5/code/app.php deleted file mode 100644 index 58222d193..000000000 --- a/hw5/code/app.php +++ /dev/null @@ -1,13 +0,0 @@ -run(); -} catch (Exception $e) { - echo $e->getMessage(); -} diff --git a/hw5/code/composer.json b/hw5/code/composer.json deleted file mode 100644 index f4d03acfa..000000000 --- a/hw5/code/composer.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "alexgaliy/app", - "type": "project", - "autoload": { - "psr-4": { - "Alexgaliy\\ConsoleChat\\": "src/" - } - }, - "authors": [ - { - "name": "Alex Galiy" - } - ], - "require": {} -} \ No newline at end of file diff --git a/hw5/code/composer.lock b/hw5/code/composer.lock deleted file mode 100644 index 9c4ccda09..000000000 --- a/hw5/code/composer.lock +++ /dev/null @@ -1,18 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "bae67957c525bcfa2574a7a30939a6e2", - "packages": [], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.6.0" -} diff --git a/hw5/code/src/App.php b/hw5/code/src/App.php deleted file mode 100644 index d454fe3f4..000000000 --- a/hw5/code/src/App.php +++ /dev/null @@ -1,34 +0,0 @@ -getCommand(); - return $command->run(); - } - private function getCommand() - { - $argv = $_SERVER['argv']; - if (count($argv) < 2) { - throw new Exception('Передайте команду скрипту'); - } - $class = ''; - switch ($argv[1]) { - case 'server': - $class = new Server(Utils::getPathToSocket()); - break; - case 'client': - $class = new Client(Utils::getPathToSocket()); - break; - default: - throw new Exception('Команда не найдена'); - break; - } - return $class; - } -} diff --git a/hw5/code/src/Client.php b/hw5/code/src/Client.php deleted file mode 100644 index 05a1f4760..000000000 --- a/hw5/code/src/Client.php +++ /dev/null @@ -1,72 +0,0 @@ -socketPath = $socketPath; - $this->client = null; - } - - public function run() - { - // Основной код - try { - foreach ($this->getUserInput() as $message) { - $this->connect(); - // Получаем ответ от сервера - $response = $this->sendMessage($message); - echo "Ответ от сервера: $response\n"; - } - } catch (Exception $e) { - return $e->getMessage() . PHP_EOL; - } - } - - public function connect() - { - // Создаем Unix-сокет - $this->client = socket_create(AF_UNIX, SOCK_STREAM, 0); - if ($this->client === false) { - throw new Exception("Не удалось создать сокет: " . socket_strerror(socket_last_error())); - } - - // Подключаемся к серверу - if (socket_connect($this->client, $this->socketPath) === false) { - throw new Exception("Не удалось подключиться к серверу: " . socket_strerror(socket_last_error($this->client))); - } - } - - public function sendMessage($message) - { - // Отправляем сообщение серверу - socket_write($this->client, $message, strlen($message)); - // Читаем ответ от сервера - $response = socket_read($this->client, 1024); - return $response; - } - - public function disconnect() - { - // Закрываем соединение с сервером - if ($this->client) { - socket_close($this->client); - } - } - - private function getUserInput() - { - while (true) { - // Вводим сообщение - $message = readline("Введите сообщение: "); - yield $message; // Возвращаем введенное сообщение - } - } -} diff --git a/hw5/code/src/Server.php b/hw5/code/src/Server.php deleted file mode 100644 index bd72ffb1b..000000000 --- a/hw5/code/src/Server.php +++ /dev/null @@ -1,66 +0,0 @@ -address = $address; - $this->socket = socket_create(AF_UNIX, SOCK_STREAM, 0); - if ($this->socket === false) { - throw new Exception("Не удалось создать сокет: " . socket_strerror(socket_last_error())); - } - - // Удаляем старый сокет, если он существует - if (file_exists($this->address)) { - unlink($this->address); - } - - if (socket_bind($this->socket, $this->address) === false) { - throw new Exception("Не удалось привязать сокет: " . socket_strerror(socket_last_error($this->socket))); - } - - if (socket_listen($this->socket, 5) === false) { - throw new Exception("Не удалось слушать сокет: " . socket_strerror(socket_last_error($this->socket))); - } - } - - public function run() - { - // echo "Сервер запущен и слушает на $this->address...\n"; - fwrite(STDOUT, 'Сервер запущен и слушает на ' . $this->address . PHP_EOL); - while (true) { - $clientSocket = socket_accept($this->socket); - if ($clientSocket !== false) { - $this->handleClient($clientSocket); - socket_close($clientSocket); - } - } - } - - private function handleClient($clientSocket) - { - $input = socket_read($clientSocket, 1024); - if ($input !== false) { - // echo "Получено сообщение: $input\n"; - fwrite(STDOUT, "Получено сообщение: " . $input . PHP_EOL); - $response = "Вы сказали: " . trim($input); - socket_write($clientSocket, $response, strlen($response)); - } - } - - public function __destruct() - { - socket_close($this->socket); - if (file_exists($this->address)) { - unlink($this->address); - } - } -} diff --git a/hw5/code/src/Utils.php b/hw5/code/src/Utils.php deleted file mode 100644 index c8d765363..000000000 --- a/hw5/code/src/Utils.php +++ /dev/null @@ -1,18 +0,0 @@ - '/path/to/socket' -]; diff --git a/hw5/code/src/config/config.ini.php b/hw5/code/src/config/config.ini.php deleted file mode 100644 index 96b5c74b1..000000000 --- a/hw5/code/src/config/config.ini.php +++ /dev/null @@ -1,5 +0,0 @@ - 'chat.sock' -]; diff --git a/hw5/docker-compose.yaml b/hw5/docker-compose.yaml deleted file mode 100644 index 12b1f0ac3..000000000 --- a/hw5/docker-compose.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# версия синтаксиса -# version: '3' - -# в этом блоке мы описываем контейнеры, которые будут запускаться -services: - - #Контейнер с PHP-FPM, назовём его app - php-server: - # Если нет секции build, то система будет искать образ в репозиториях - build: - context: ./fpm - dockerfile: Dockerfile - image: chat/php # имя будущего образа - container_name: php-server # имя контейнера после запуска - volumes: - - ./code:/data/mysite.local - # мы можем создать для контейнеров внутреннюю сеть - networks: - - app-network - - #Контейнер с PHP-FPM, назовём его app - php-client: - # Если нет секции build, то система будет искать образ в репозиториях - build: - context: ./fpm - dockerfile: Dockerfile - image: chat/php # имя будущего образа - container_name: php-client # имя контейнера после запуска - volumes: - - ./code:/data/mysite.local - # мы можем создать для контейнеров внутреннюю сеть - networks: - - app-network - -#Docker Networks -networks: - app-network: - driver: bridge diff --git a/hw5/fpm/Dockerfile b/hw5/fpm/Dockerfile deleted file mode 100644 index 143507183..000000000 --- a/hw5/fpm/Dockerfile +++ /dev/null @@ -1,34 +0,0 @@ -FROM php:8.2-fpm - -RUN apt-get update && apt-get install -y \ - libfreetype-dev \ - libjpeg62-turbo-dev \ - libpng-dev \ - libonig-dev \ - libzip-dev \ - unzip \ - libmemcached-dev \ - zlib1g-dev \ - libmemcached11 \ - libssl-dev \ - && docker-php-ext-install -j$(nproc) iconv mbstring mysqli pdo_mysql zip \ - && docker-php-ext-configure gd --with-freetype --with-jpeg \ - && docker-php-ext-install -j$(nproc) gd \ - && pecl install redis && \ - docker-php-ext-enable redis - -RUN yes '' | pecl install -f memcached-3.2.0 \ - && docker-php-ext-enable memcached -RUN docker-php-ext-install sockets - -# composer - -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -COPY ./php.ini /usr/local/etc/php/conf.d/php-custom.ini - -WORKDIR /data - -VOLUME /data - -CMD ["php-fpm"] diff --git a/hw5/fpm/php.ini b/hw5/fpm/php.ini deleted file mode 100644 index 98ab351c2..000000000 --- a/hw5/fpm/php.ini +++ /dev/null @@ -1 +0,0 @@ -; extension=sockets \ No newline at end of file