Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hw13 #1137

Open
wants to merge 4 commits into
base: KRudenko/main
Choose a base branch
from
Open

hw13 #1137

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
APP_ENV=dev
ELASTICSEARCH_HOST=elasticsearch:9200
ELASTICSEARCH_USER=elastic
ELASTICSEARCH_PASSWORD=password
ELASTICSEARCH_CA_BUNDLE=config/http_ca.crt
ELASTIC_INDEX=otus-books
INDEX_FILE_PATH=files/books.json
SEARCH_ENGINE=elastic
PAGE_SIZE=100
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@
.DS_Store
.AppleDouble
.LSOverride
.env
/config/http_ca.crt
15 changes: 15 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM php:8.2-cli

RUN apt-get update && apt-get install -y \
libzip-dev \
unzip \
&& docker-php-ext-install zip

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

ARG SOURCE_PATH=/var/www/html
WORKDIR $SOURCE_PATH
COPY . $SOURCE_PATH
RUN composer install --no-dev --optimize-autoloader

CMD ["php", "-S", "0.0.0.0:8000"]
91 changes: 89 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,90 @@
# PHP_2024
# OTUS BOOK SHOP

https://otus.ru/lessons/razrabotchik-php/?utm_source=github&utm_medium=free&utm_campaign=otus
```shell
docker exec -ti book_shop chmod +x app
```

# Подключение elasticsearch

После запуска проекта, запустите команду, для генерации пароля:

```shell
docker exec -ti elastic_book bin/elasticsearch-reset-password -u elastic
```

В консоль выведется пароль необходимый для работы.
Сохраните его в переменную `ELASTICSEARCH_PASSWORD` в `.env`.

Необязательно. Копируем себе сертификат и указываем до него путь в `ELASTICSEARCH_CA_BUNDLE` в `.env`.

```shell
docker cp elastic_book:/usr/share/elasticsearch/config/certs/http_ca.crt ./config/http_ca.crt
```

Устанавливаем зависимоти.

```shell
docker exec -ti book_shop composer install --optimize-autoloader
```

# Для получения данных с сайта используется команда.

```shell
docker exec -ti book_shop php app app:spider
```

Более подробная информация

```shell
docker exec -ti book_shop php app app:spider --help
```

# Для индексирования данных в эластик команда.

```shell
docker exec -ti book_shop php app app:bulk
```

Более подробная информация

```shell
docker exec -ti book_shop php app app:bulk --help
```

# Для поиска используется команда.

```shell
docker exec -ti book_shop php app app:search
```

Команда поддерживает опции:

```shell
--index="otus-book" # Можно указать индекс
--page=1 # Для постраничного вывода. На одной странице выводится 100.
- Точное значение: field=value
- Диапазон: field[operator]=value (операторы: eq, gt, gte, lt, lte)
- Множественные значения: field[]=value1&field[]=value2
- Поиск по подстроке: field~=value
Примеры:
- -f "title=PHP"
- -f "price[gte]=100" -f "price[lte]=200"
- -f "genre[]=fiction" -f "genre[]=programming"
- -f "description~=best"
```

```shell
docker exec -ti book_shop php app app:search -f "title~=империя" -f "price[gt]=500" -f "price[lte]=2000"
```

Более подробная информация

```shell
docker exec -ti book_shop php app app:search --help
```

# Для более подробной информации по проекту.

```shell
docker exec -ti book_shop php app --help
```
10 changes: 10 additions & 0 deletions app
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/env php

<?php

require __DIR__.'/vendor/autoload.php';

use KRudenko\Otus\Core\Kernel;

$kernel = new Kernel();
$kernel->handleCommand($argv);
27 changes: 27 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"name": "krudenko/hw13",
"description": "Otus Home Work 13",
"type": "project",
"autoload": {
"psr-4": {
"KRudenko\\Otus\\": "src/"
}
},
"require": {
"php": "^8.2",
"elasticsearch/elasticsearch": "^8.17",
"vlucas/phpdotenv": "^5.6",
"php-di/php-di": "^7.0",
"symfony/console": "^7.2",
"symfony/finder": "^7.2",
"symfony/browser-kit": "^7.2",
"symfony/http-client": "^7.2",
"symfony/dom-crawler": "^7.2",
"symfony/css-selector": "^7.2"
},
"config": {
"allow-plugins": {
"php-http/discovery": true
}
}
}
Loading