【问题标题】:How can I inform a C++ application with JSON data when an event occurs in my PHP? [closed]当我的 PHP 中发生事件时,如何使用 JSON 数据通知 C++ 应用程序? [关闭]
【发布时间】:2012-11-06 19:28:57
【问题描述】:

基本上,我想在我的 PHP 页面中发生事件时通知 C++ 应用程序(游戏应用程序)。

下面是一个例子:

  • 用户登录网站并购买商品。
  • PHP 验证此事务并将 JSON/XML 对象返回给 C++ 应用程序。
  • C++ 应用程序接收 transactionID 并向用户提供他购买的项目。

现在我这样做很糟糕。 PHP 写入数据库,C++ 应用程序不断读取数据库,导致性能损失。

我该如何存档?

【问题讨论】:

  • 嗯,这很广泛。您基本上是在要求一份十页的设计文档,而您不会在这里得到它。不过,每小时 500 英镑,我会帮你的。
  • 我不认为你目前的方法特别“糟糕”
  • 我将以 499.50 英镑/小时的价格降低 @LightnessRacesinOrbit 的价格
  • 只是因为你会有更大的预算。
  • @vascowhite:因为我更棒。虽然你的网站很不错。

标签: php c++


【解决方案1】:

使用ZeroMQ同时支持PHP和C++;

简单的 hello World 示例

//
//  Hello World server in C++
//  Binds REP socket to tcp://*:5555
//  Expects "Hello" from client, replies with "World"
//
#include <zmq.hpp>
#include <string>
#include <iostream>
#include <unistd.h>

int main () {
    //  Prepare our context and socket
    zmq::context_t context (1);
    zmq::socket_t socket (context, ZMQ_REP);
    socket.bind ("tcp://*:5555");

    while (true) {
        zmq::message_t request;

        //  Wait for next request from client
        socket.recv (&request);
        std::cout << "Received Hello" << std::endl;

        //  Do some 'work'
        sleep (1);

        //  Send reply back to client
        zmq::message_t reply (5);
        memcpy ((void *) reply.data (), "World", 5);
        socket.send (reply);
    }
    return 0;
}

PHP

$context = new ZMQContext();
$requester = new ZMQSocket($context, ZMQ::SOCKET_REQ);
$requester->connect("tcp://localhost:5555");

//Send Simple Request
$requester->send("Hello");

//Get Response Form C++
printf("Received reply %s", $requester->recv());

【讨论】:

  • 正在寻找这样的东西,非常感谢。知道它可以在不以每小时 500 英镑喂食巨魔的情况下完成。
  • 如果你真的想要一个可扩展的系统,你可能需要每小时支付 500 英镑参加 Orbit 的 Lightness Races
  • 我宁愿每小时支付 500 英镑购买一台适合此目的的集群服务器。我敢打赌它会超出他所能归档的任何东西。
【解决方案2】:

解决问题有不同的方法。您可以创建一个简单的 C++ 服务侦听。 每当在 PHP 中处理新订单时,它应该通知 C++ 的 Service

【讨论】:

    【解决方案3】:

    您正在寻找的是interprocess communication 的不错选择。如果它在单个系统上,那么套接字是一个常见的选择。应用程序位于不同的系统上,这取决于您的一些要求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多