Сессии, как PHP в C ++? - PullRequest
1 голос
/ 14 мая 2011

Возможно ли использовать что-то вроде сеансов, подобных сеансам в PHP, в C ++?

В PHP они используются как

$_SESSION['name'] = $value;

Я действительно хочу сделать то же приложение, используяC ++ как PHP ... требует анализатора времени выполнения.

Мое приложение, написанное на 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 ++.

Ответы [ 4 ]

1 голос
/ 14 мая 2011

Понятие «сессия», как и «сессия PHP», имеет смысл, только если вы занимаетесь веб-разработкой на стороне сервера.C ++ был спроектирован так, чтобы быть как можно более универсальным (то, была ли достигнута эта цель, - это совсем другая история), поэтому он изначально не поддерживает какую-либо концепцию, связанную с каким-либо конкретным приложением.Что, в вашем конкретном случае, означает, что в C ++, конечно, нет нативного понятия «сессия».

Конечно, в теории , вы могли бы заниматься веб-разработкой в ​​стиле PHP на C ++в том числе с использованием PHP-подобных сессий.Но вам придется либо (1) использовать какую-то инфраструктуру, предоставляющую PHP-подобную функциональность сеанса, что, я сомневаюсь, кто-либо когда-либо разрабатывал;или (2) самостоятельно внедрить упомянутую структуру, что было бы действительно неудобным.И не было бы ощутимого преимущества, которое вы могли бы получить в обмен на ваши неудобства: основными причинами, по которым люди используют C ++ в наши дни, являются: (1) производительность слишком критична для использования языка более высокого уровня и (2) совместимость с другими системами, написанными наC ++ является требованием.(1) не применяется, поскольку в большинстве случаев время ответа веб-приложения определяется временем, которое требуется для передачи сообщений по сети, даже для веб-приложений, развернутых в интрасети.Время, затрачиваемое веб-сервером на обработку запроса, каким бы сложным оно ни было, часто ничтожно для сравнения.И (2) не применяется, потому что системы, взаимодействующие в сети, разрабатываются в соответствии со стандартами, которые гарантируют, что технологии, лежащие в основе этих систем, не имеют значения.

Большинство людей, которые говорят, что им необходимо реализовать свои приложения на C ++, - это люди, которые ужереализовал упомянутые приложения на выбранных ими языках (или языках своих боссов) и обнаружил проблемы с производительностью.По моему опыту, большинство программных проблем с производительностью возникает из-за того, что приложения не разработаны должным образом и / или не реализованы с учетом масштабируемости.Для веб-приложения такие вещи, как минимизация количества серверных отключений (каждый раз, когда конкретное значение / объект / что-либо еще должно быть отправлено по сети для получения ответа), являются типом проектных решений, которые могут существенно повлиять на производительность.

Вкратце: если проблемы с производительностью являются причиной, по которой вы хотите реализовать это приложение на C ++, вам лучше проанализировать каждую часть вашей нынешней системы PHP, определить, какие из них вызывают проблемы с производительностью, и перепроектироватьи переопределить их.

1 голос
/ 14 мая 2011

Если ваши требования к данным невелики, вы можете просто сохранить значение в файле cookie, который вызывающая сторона передаст обратно в CGI-программу C ++, когда она снова ее вызовет.просто используйте обычные функции ввода-вывода C ++ для сохранения данных в файле, в разделе реестра (для Windows) или, если у вас есть большие требования к данным, во встроенную базу данных, например Sqlite.он просто находится в цикле, и вам не нужно сохранять значение от одного вызова к другому (т.е. при перезапуске программы), просто сохраняйте значение в другой переменной.Вы можете просто использовать STL hashmap в качестве "SESSION", если вы хотите использовать пары имя / значение.Или я упускаю что-то фундаментальное?

1 голос
/ 14 мая 2011

Это не имеет смысла, сеансы PHP являются препятствием, потому что процесс не переносит один HTTP-запрос к следующему.Я действительно не знаю, чего вы хотите достичь здесь.Может быть http://www.boost.org/doc/libs/1_46_1/doc/html/interprocess.html это?

0 голосов
/ 14 мая 2011

PHP ... требуется анализатор времени выполнения.

Нет, установите apc или любой другой кэш скомпилированного кода, а php анализируется только один раз. Конечно, сгенерированный байт-код все еще интерпретируется ...

На больших платформах (много кода) время разбора может быть намного больше, чем фактическое выполнение скрипта, поэтому это значительно сокращает время просмотра страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...