从 C++ 传递数据 转为 PHP

发布于 2024-07-23 07:43:37 字数 151 浏览 9 评论 0原文

我需要将一个值从 PHP 传递到 C++。 我想我可以使用 PHP 的 passthru() 函数。 然后我希望 C++ 对该值执行某些操作并将结果返回给 PHP。 这是我无法解决的问题,有谁知道如何将数据从 C++ 传递到 PHP? 我不想使用中间文件,因为我认为这会减慢速度。

I need to pass a value from PHP to C++. I think I can do with PHP's passthru() function.
Then I want C++ to do something to that value and return the result to PHP.
This is the bit I can't work out, does anyone know how to pass data from C++ to PHP?
I'd rather not use an intermediate file as I am thinking this will slow things down.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

孤者何惧 2024-07-30 07:43:37

您可以让您的 C++ 应用程序将其输出发送到 stdout,然后使用 从 PHP 调用它反引号,例如

$output=`myapp $myinputparams`;

You could have your c++ app send its output to stdout, then call it from PHP with backticks, e.g.

$output=`myapp $myinputparams`;
怼怹恏 2024-07-30 07:43:37

哇,非常感谢哥伦布和 保罗·迪克森.

现在我可以运行php来调用c++,然后将值传回给php~ =)

这里我提供了一个示例cpp & php 为它:

一个用于添加输入的简单程序:

a.cpp (a.exe):

#include<iostream>
#include<cstdlib>
using namespace std;

int main(int argc, char* argv[]) {
  int val[2];
  for(int i = 1; i < argc; i++) { // retrieve the value from php
      val[i-1] = atoi(argv[i]);
  }
  int total = val[0] + val[1]; // sum up
  cout << total;  // std::cout will output to php
  return 0;
}

sample.php:

<?php
    $a = 2;
    $b = 3;
    $c_output=`a.exe $a $b`; // pass in the two value to the c++ prog
    echo "<pre>$c_output</pre>"; //received the sum
    echo "Output: " . ($output + 1); //modify the value in php and output
?>

输出:

5
Output: 6

wow thanks a lot to Columbo & Paul Dixon.

Now I can run php to call c++ thn pass back value to php~ =)

Here I provide a sample cpp & php for it:

A simple program for adding up inputs:

a.cpp (a.exe):

#include<iostream>
#include<cstdlib>
using namespace std;

int main(int argc, char* argv[]) {
  int val[2];
  for(int i = 1; i < argc; i++) { // retrieve the value from php
      val[i-1] = atoi(argv[i]);
  }
  int total = val[0] + val[1]; // sum up
  cout << total;  // std::cout will output to php
  return 0;
}

sample.php:

<?php
    $a = 2;
    $b = 3;
    $c_output=`a.exe $a $b`; // pass in the two value to the c++ prog
    echo "<pre>$c_output</pre>"; //received the sum
    echo "Output: " . ($output + 1); //modify the value in php and output
?>

output:

5
Output: 6
拔了角的鹿 2024-07-30 07:43:37

如果您需要与正在运行的 C++ 程序通信,则通过本地主机的 socket 连接可能是最简单的,最独立于平台
以及最广泛支持的两个进程之间通信的解决方案。 传统上,套接字是为了通过网络接口进行通信而构建的,但我看到它们在很多情况下用作管道的一种方法。 它们相当普遍,并且在大多数现代语言中都受到支持。

这是针对您的 C++ 程序的 套接字编程 C 指南。

If you need to communicate to a running C++ program, a socket connection over the localhost might be the simplest, most platform-independent
and most widely supported solution for communicating between the two processes. Sockets were traditionally built to communicate over network interfaces, but I have seen them used in many cases as a method of doing a pipe. They are fairly ubiquitous and supported in most modern languages.

Here's a C guide for socket programming. for your C++ program.

笑着哭最痛 2024-07-30 07:43:37

这篇关于在 PHP 扩展中包装 C++ 类的文章可能会有所帮助。

编辑:其他答案中的所有解决方案都简单得多,但灵活性较差。 这完全取决于您的需要。

This article about wrapping C++ classes in a PHP extension may help.

EDIT: all the solutions in other answers are far simpler, but less flexible. It all depends on what you need.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文