0

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

下面是一个例子:

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

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

我怎样才能归档这个?

4

3 回答 3

2

使用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());
于 2012-11-06T19:44:31.897 回答
0

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

于 2012-11-06T19:42:41.293 回答
0

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

于 2012-11-06T19:45:24.347 回答