Задать вопрос
  • Как организовать обмен данными между приложениями PHP?

    Hakujin
    @Hakujin
    Разрабочик
    Ну, вы могли бы открыть сокет на демоне и слушать его, а со второго приложения, соответственно соединения бросать.
    Это всяко будет быстрее, чем через вебсервер по http обращаться.
    Ответ написан
    Комментировать
  • Как организовать обмен данными между приложениями PHP?

    Minifets
    @Minifets
    Hello world!!!
    Как вариант можно внедрить сервис очереди сообщений.

    Gearman например.
    Ответ написан
    1 комментарий
  • Как организовать обмен данными между приложениями PHP?

    eXcNightRider
    @eXcNightRider
    FullStack Web Developer | DevOps
    Существует отличная реализация сокетов с поддержкой протокола WAMP на PHP - Ratchet. Подробная документация на этом сайте
    А теперь рецепт из практики:
    1. Собираем простое приложение с помощью composer, нам понадобится пакет cboden/ratchet
    2. Пишем базовый класс
    <?php
    namespace MyApp;
    use Ratchet\MessageComponentInterface;
    use Ratchet\ConnectionInterface;
    
    class Msg implements MessageComponentInterface {
        public function onOpen(ConnectionInterface $conn) {
        }
    
        public function onMessage(ConnectionInterface $from, $msg) {
        }
    
        public function onClose(ConnectionInterface $conn) {
        }
    
        public function onError(ConnectionInterface $conn, \Exception $e) {
        }
    }

    Четыре определённых в коде функции обязательны, они предназначены для обработки соответствующих событий
    3. PHP-CLI скрипт, который запустит сервер сокетов и будет принимать сообщения:
    msg-server.php
    <?php
    use Ratchet\Server\IoServer;
    use MyApp\Msg;
    
        require dirname(__DIR__) . '/vendor/autoload.php';
    
        $server = IoServer::factory(
            new Msg(),
            8080
        );
    
        $server->run();

    Если запустить данный файл командой
    php bin/msg-server.php
    Сервер будет работать и к нему можно даже подключиться с помощью telnet
    telnet localhost 8080

    4. Клиентская часть - пакет ratchet/pawl
    5. Пример реализации:
    <?php
    
        require __DIR__ . '/vendor/autoload.php';
    
        \Ratchet\Client\connect('ws://192.168.1.100:8080')->then(function($conn) {
            $conn->on('message', function($msg) use ($conn) {
                echo "Received: {$msg}\n";
                $conn->close();
            });
    
            $conn->send('Hello World!');
        }, function ($e) {
            echo "Could not connect: {$e->getMessage()}\n";
        });


    Для передачи структурированных данных можно использовать традиционный JSON
    Ответ написан
    Комментировать