greengarlic
@greengarlic

PHP консольное приложение с механизмом сессий или как идентифицировать пользователя?

Возможно это и кажется идиотской идеей но как то это нужно сделать.

Поясню суть. Есть какое то консольное приложение и в нем куча сервисов. Пользователь вызывает сервисы и они там себе тихонько выполняют что то. Затем пользователь говорит «сгенери репорты», они создаются и мы забываем про этого юзера. Может быть много пользователей.

Как же мне придумать механизм сессий но без кук, и очень хотелось бы без передачи пользователя какого то ID (читай как сессии без кук)

Спасибо за любой извращенный способ :3
  • Вопрос задан
  • 3316 просмотров
Решения вопроса 1
Evengard
@Evengard
Придумал только четыре способа:
1. При каждой команде не выходить из программы. Микро-интерпретатор такой.
2. Попробывать вытащить username и host компа, за которым юзер работает, из каких нить environmental variables
3. Попробывать самому чего нить записать в environmental variables (вместо кук) — удалять как только сессия закончилась
4. Криейтить в /tmp файл заместо куки соответственно. При завершении сессии соответствнено удалять
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
session_id($_SERVER['USER']);
session_start();

а дальше пользуемся сессией как обычно
главное хранить сессию в базе или чтоб у всех пользователей был доступ на запись в папку для файлов сессии (небезопасно)
Ответ написан
Комментировать
greengarlic
@greengarlic Автор вопроса
Спасибо всем!
Остановился на 1 способе что предложил Evengard
получилось как то так:
<?php

$fp = fopen("php://stdin", "r");
$in = '';

$core = Core::getInstance();

while($in != "exit") {
echo "php> ";
$in=trim(fgets($fp));
$str = explode(' ', $in);
$_SERVER['argv'] = array();
foreach ($str as $s) {
$_SERVER['argv'][] = trim($s);
}
echo "\n";
$_SERVER['argc'] = count( $_SERVER['argv']);

$core->run();
}
?>

Пока что подводные камни только в неудобстве ввода. А так ничего в общем. Может я не вижу чего то не очевидного, было бы неплохо узнать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 09:29
2500 руб./за проект
25 апр. 2024, в 09:27
4000 руб./за проект
25 апр. 2024, в 09:20
10000 руб./за проект