当我的PHP中发生事件时,如何通过JSON数据通知C ++应用程序?

时间:2012-11-06 19:28:58

标签: php c++

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

以下是一个例子:

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

现在我的做法很糟糕。 PHP写入数据库时​​,C ++应用程序不断读取数据库,导致性能下降。

我怎么能达到这个目的?

3 个答案:

答案 0 :(得分:2)

使用ZeroMQ支持PHP和C ++;

简单问候世界示例

//
//  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());

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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