README.md

Framework Foton

Инструмент для профессиональной Web разработки

sudo service mysql stop
sudo systemctl stop apache2

скачиваем репозиторий

cd foton/
cp sample.env .env
sudo docker compose up -d

После установки необходимо запустить контейнеры

sudo service docker start
sudo docker images
sudo docker run lamp-database:latest
sudo docker run lamp-webserver:latest
sudo docker run phpmyadmin:latest
sudo docker run redis:latest
sudo docker ps -a
sudo docker start pid

Далее вводим в командной строке

php install названиебазыданных логин пароль mysql/pgsql лицензия

Или же переходим на сайт, у меня это

  • порт 443 Вводим доступы к базе данных mysql:

    Хост/ порт:

database:3306

база данных

docker

логин

root

пароль

tiger

вводим номер лицензии

И нажимаем инсталляцию

Работа с авторизацией

Далее мы попадаем на страницу входа в админку
Вводим во все поля demo
Далее заходим а дминку и переходим в меню пользователи->список пользователей с ролями
И меняем пароль от demo либо создаем своего пользователя и удаляем старого пользователя demo
Также для безопасности настоятельно рекомендуем синхронизировать свой компьютер по времени с вашим сервером и скачать ключ в админке(значок ключа либо сверху либо сбоку в панели)
После скачивания ключа и настройки по времени временные метки необходимо будет копировать и вставлять из файла ключа в поля для входа Last code 1 и Last code 2

В установке уже предусмотрены модули composer

Для логирования Monolog
Вы можете создать свой модуль на основании текущего:

<?php
namespace Dev\Module;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
class Log{
    public function add($text){
        $logger = new Logger('my_app');
        $logger->warning($text); 
        $logger->pushHandler(new StreamHandler('app.log'));
    }
}

Также библиотека для работы с WebSocket

Вы можете создать свой модуль

<?php
namespace Dev\Module;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;


class WebSocketHandler implements MessageComponentInterface {
  protected $clients;

  public function __construct() {
    $this->clients = new \SplObjectStorage;
  }

  // Обработчик нового подключения клиента
  public function onOpen(ConnectionInterface $conn) {
    $this->clients->attach($conn);
    echo "New client connected: {$conn->resourceId}\n";
  }

  // Обработчик получения сообщения от клиента
  public function onMessage(ConnectionInterface $from, $msg) {
	foreach ($this->clients as $client) {
		  $client->send($msg);
	}
  }


  // Обработчик закрытия соединения клиента
  public function onClose(ConnectionInterface $conn) {
    $this->clients->detach($conn);
    echo "Client disconnected: {$conn->resourceId}\n";
  }

  // Обработчик ошибок соединения
  public function onError(ConnectionInterface $conn, \Exception $e) {
    echo "An error has occurred: {$e->getMessage()}\n";
    $conn->close();
  }
}

И модуль например apiSocket

<?php
namespace Dev\Module;
use Ratchet\WebSocket\WsServer;
use Ratchet\Http\HttpServer;
use Ratchet\Server\IoServer;
use WebSocketHandler;

class ApiSocket implements AnyApi{
    public function api(){
        $server = IoServer::factory(
        new HttpServer(
            new WsServer(
            new WebSocketHandler()
            )
        ),
        8080
        );
        return $server->run();
    }
}

Для вызова на front-end

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>WebSocket Chat</title>
</head>
<body>
    <div id="messages"></div>
    <form>
        <input type="text" id="message" autocomplete="off">
        <button>Send</button>
    </form>

    <script>
        const socket = new WebSocket('ws://localhost:8080');

        socket.addEventListener('open', function(event) {
            console.log('Connected to server.');
        });

        socket.addEventListener('message', function(event) {
            const messages = document.getElementById('messages');
            const message = document.createElement('div');
            message.innerHTML = event.data;
            messages.appendChild(message);
        });

        const form = document.querySelector('form');
        const input = document.querySelector('input');

        form.addEventListener('submit', function(event) {
            event.preventDefault();

            const message = input.value;
            socket.send(message);

            input.value = '';
        });
		
    </script>
</body>
</html>
Описание
Framework Foton Версия FotonBase для установки через docker-compose Скачиваете и устанавливаете полноценный сервер со всеми зависимостями
Конвейеры
0 успешных
0 с ошибкой
Разработчики