Я пытаюсь получить php session_id с помощью моего сценария bash.
эхо $ 1 в моем сценарии bash работает после запуска сценария bash с exec в php. Но $ 1 в моем том же сценарии bash {echo "удалить $ 1"; sleep1;} | telnet localhost 12345 не получает значения.
.php код
$output = shell_exec('./test.sh '.escapeshellarg(session_id()));
.sh код
!/bin/sh
echo $1
{ echo "delete $1"; sleep 1; } | telnet localhost 12345
Результат из $ output
fa123a3b435c0534345f453554355dasds2a3dfsf7 NOT_FOUND
@IdontDownVote Я пытаюсь немедленно удалить кеш, а не ждать, пока он истечет. Сброс не работает. Я пробовал.
кеш? какой кеш?






Если вы пытаетесь передать команду через telnet, вам нужно будет посмотреть на expect вместо sh, сделав что-то вроде этого:
#!/usr/bin/expect
set sid [lindex $argv 1]
spawn telnet localhost 12345
expect "#"
send "delete $sid"
Или просто попросите PHP отправить команду.
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, "localhost", 12345);
$cmd = "delete " . session_id();
socket_write($socket, $cmd, strlen($cmd));
while ($out = socket_read($socket, 2048)) {
echo $out;
}
socket_close($socket);
Привет, Микен32. Я пробовал оба решения. Это все еще не работает.
какой здесь смысл, почему бы не отключить сеанс?