Интересно, почему что-то подобное не работает (на самом деле не работает):
4.php :
<php
session_start();
$my_id = session_id();
$_SESSION['username'] = (($_SESSION['username'] == 'nimic') ? 's-a schimbat' : $_GET['test']);
file_put_contents('comm.g', PHP_EOL.$my_id, FILE_APPEND);
sleep(3); // can be left out
echo $_SESSION['username'];
?>
4.php - это простая страница, которая задает только компонент username для $ _SESSION, затем записывает идентификатор сеанса в файл, после чего выводит значение $ _SESSION ['username'].
Тогда:
3.php :
<php
while(true)
{
if(file_exists("comm.g"))
{
$c = file("comm.g");
unlink("comm.g");
session_start();
foreach($c as $k => $v)
{
if($v != '')
{
$my_id = session_id();
session_write_close();
session_id($v);
session_start();
file_put_contents("result.cc", $_SESSION['username'].'---'.$v.'END'.PHP_EOL.PHP_EOL, FILE_APPEND);
$_SESSION['username'] = 'somethingelse';
session_id($my_id);
session_start();
}
}
session_write_close();
}
}
?>
3.php запускается cronjob каждую минуту в течение 30 секунд (пока сервер не убьет его). В любом случае, в result.cc
я нахожу (за эти 30 доступных секунд) ожидаемый результат ... значение $ _GET ['test'].
Но это не меняет значение $ _SESSION ['username'], я даже не ожидал такого поведения на самом деле, я знал, что сна не хватит, но, тем не менее, при обновлении не должен быть изменены? ...
Я знаю, что мой код ужасен, это всего лишь тест, если он сработает, он будет улучшен.
Но, похоже, я этого не понимаю. Что я делаю неправильно?
На самом деле я делаю много вещей неправильно, сама система не должна использоваться таким образом, я тоже это знаю, но все же, сейчас это мой единственный вариант. У меня есть более сложные идеи об этом, но если это не сработает, остальные тоже не сработают.
Мое намерение на самом деле состоит в том, чтобы выполнить код в отдельном потоке, чтобы я мог избежать некоторых изменений (например, зарегистрировать оболочку для схемы файлов и не иметь возможности отменить ее регистрацию (восстановить), когда мне это нужно, внутри класса оболочки, который это) что я оттуда. Неортодоксальный метод, я знаю ...
Итак, вы можете помочь с любыми идеями? Спасибо.
РЕДАКТИРОВАТЬ 1
Даже если привести меня к интересной идее @ Ответ Бена был не точным ... На самом деле в куки хранится только идентификатор сессии, я заменил потребность в куки с помощью файла, чтобы cronjob знал, какая сессия должна После изменения я получил правильное значение для $ _SESSION ['username'] для любых "зарегистрированных" сеансов, но даже в этом случае я не смог изменить эти чертовы значения, как будто они были помечены только для чтения. Теперь, переосмысливая, я обнаружил, что идея все еще на ногах, жизнеспособность и решение вообще.
Так что мои вопросы все еще заданы ... ПОЧЕМУ это не сработает?