像 PHP 这样的会话 C++

Sessions like PHP in C++?

本文关键字:会话 C++ PHP      更新时间:2023-10-16

是否可以在 PHP 中使用类似 C++ 中的会话?

在 PHP 中,它们的使用方式如下

$_SESSION['name'] = $value;

我真的很想使用与 PHP C++制作相同的应用程序......需要运行时解析器。

我用PHP编写的应用程序使用会话,以便我可以从网站(数字)中获取一些内容并将值存储在SESSION变量中,我最后调用该变量以在重新加载页面时将其与新值进行比较。

我宁愿在C++中使用相同的功能。

鉴于这无处可去,我将提供 PHP 代码

<?php
session_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://dashjr.org/~luke-jr/programs/bitcoin/pool/balances.json");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
echo 'Last BTC: '.$_SESSION['last'].'<br>';
$obj = json_decode($result,true);
echo 'Current BTC: ';
$new = (int)$obj["1Hy5h24yBYKtQ1vNGaxY5rBJSEuTiMkBkx"]["balance"]/100000000;
echo $new;
if((int)$_SESSION['last'] < $new)
{
    echo '<br><br>You earned more';
}
else
{
    echo '<br><br>You earned less';
}
$_SESSION['last'] = $obj["1Hy5h24yBYKtQ1vNGaxY5rBJSEuTiMkBkx"]["balance"]/100000000;

unset($result,$obj);
?>

我需要将其移植到C++。

这是没有意义的,PHP 会话是一个笨拙的,因为进程无法从一个 HTTP 请求到下一个 HTTP 请求中存活下来。我真的不知道你想在这里实现什么。也许 http://www.boost.org/doc/libs/1_46_1/doc/html/interprocess.html 这个?

如果你的数据需求很小,你可以将值存储在一个cookie中,调用者在再次调用它时会将其传递回C++ CGI程序。

编辑:由于这不是一个Web应用程序,只需使用常规C++IO函数来保留数据,无论是在文件,注册表项(适用于Windows)中,还是如果您有广泛的数据要求,则使用像Sqlite这样的嵌入式数据库。

编辑:如果它只是坐在循环中,并且您不需要从一个调用保留另一个调用的值(即跨程序重新启动),只需将值存储在不同的变量中即可。 如果你想使用名称/值对,你可以只使用STL哈希图作为"SESSION"。 还是我错过了一些基本的东西?

"PHP会话"中的"会话"概念只有在进行服务器端Web开发时才有意义。C++被设计为尽可能通用(该目标是否实现是完全不同的故事),因此它本身不支持与任何特定应用程序相关的任何概念。当然,在您的特定情况下,这意味着C++没有"会话"的原生概念。

当然,从理论上讲,你可以在C++中进行PHP风格的Web开发,包括使用类似PHP的会话。但是你必须(1)使用一些框架来公开类似PHP的会话功能,我怀疑有人曾经开发过;或者(2)自己实现所述框架,这真的很不方便。而且,您不会因为不便而获得任何切实的好处:如今人们使用C++的主要原因是(1)性能太关键而无法使用更高级的语言,以及(2)与用C++编写的其他系统的兼容性是必需的。(1) 不适用,因为在大多数情况下,Web 应用程序的响应时间取决于通过网络传输消息所需的时间,即使对于部署在 Intranet 中的 Web 应用程序也是如此。相比之下,Web 服务器处理请求所花费的时间(无论多么复杂)通常微不足道。(2)不适用,因为Web上的系统互操作是按照标准开发的,这些标准确保这些系统的基础技术无关紧要。

大多数说他们需要用C++实现应用程序的人已经用他们选择的语言(或老板选择的语言)实现了上述应用程序,并发现了性能问题。根据我的经验,大多数软件引起的性能问题都是由于应用程序没有正确设计和/或实现时考虑到可伸缩性。对于 Web 应用程序,诸如最小化服务器行程量(每次必须通过网络发送特定值/对象/任何内容才能获得响应时)之类的事情是可以有意义地影响性能的设计决策。

简而言之:如果性能问题是您希望在C++中实现此应用程序的原因,那么您最好分析当前PHP系统的每个部分,确定哪些部分导致了性能问题,然后重新设计并重新实现它们。

.PHP。。。需要运行时解析器。

不,安装 apc 或任何其他编译的代码缓存,php 只解析一次。当然生成的字节码仍然会被解释...

在大型框架(大量代码)上,解析时间可能比实际脚本执行长得多,因此这大大减少了页面时间。