在 C++ 中为 php 创建脚本
Make script in c++ for php
我正在制作一个网站,PHP 对我来说还不够强大,所以我决定也使用 C++。我制作了执行预期操作的 EXE 文件,但我不知道如何在 php 中获取输出,我计算了输出,我认为这会起作用,所以我做错了什么。
PHP:
exec(str_replace('\classes', '', dirname(__FILE__)) . '\data\vedur ', $row);
C++:
cout << data;
您所做的应该有效(只要您打印 $row)。
但这可能不是最有效的,因为它执行命令并构建数组(因此数据在可执行文件完成之前不可用)。
使用popen()
会更好。这将执行命令,但将可执行文件的输出作为文件流提供(对于代码的其余部分,它看起来像一个打开的文件)。所以你可以像读取文件一样读取流。
$handle = popen(str_replace('\classes', '', dirname(__FILE__)) . '\data\vedur ');
if ($handle) {
while (($line = fgets($handle)) !== false) {
// process the line read.
}
pclose($handle);
} else {
// error opening the file.
}
注意:我的 PHP foo 不强。因此,请进行适当的检查。
另一个注意事项:我假设您是从 PHP 调用 C++,因为您正在使用 PHP 生成所有正确的 headers 等
但是,如果您可以从 C++ 执行此操作,则可以直接从 Web 服务器调用 C++,而无需使用 PHP 层。
我正在制作一个网站,PHP 对我来说还不够强大,所以我决定也使用 C++。我制作了执行预期操作的 EXE 文件,但我不知道如何在 php 中获取输出,我计算了输出,我认为这会起作用,所以我做错了什么。
PHP:
exec(str_replace('\classes', '', dirname(__FILE__)) . '\data\vedur ', $row);
C++:
cout << data;
您所做的应该有效(只要您打印 $row)。
但这可能不是最有效的,因为它执行命令并构建数组(因此数据在可执行文件完成之前不可用)。
使用popen()
会更好。这将执行命令,但将可执行文件的输出作为文件流提供(对于代码的其余部分,它看起来像一个打开的文件)。所以你可以像读取文件一样读取流。
$handle = popen(str_replace('\classes', '', dirname(__FILE__)) . '\data\vedur ');
if ($handle) {
while (($line = fgets($handle)) !== false) {
// process the line read.
}
pclose($handle);
} else {
// error opening the file.
}
注意:我的 PHP foo 不强。因此,请进行适当的检查。
另一个注意事项:我假设您是从 PHP 调用 C++,因为您正在使用 PHP 生成所有正确的 headers 等
但是,如果您可以从 C++ 执行此操作,则可以直接从 Web 服务器调用 C++,而无需使用 PHP 层。