PHP session_start() зависает.

#php

#php

Вопрос:

У меня есть несколько скриптов в моем корне mysite, и они свободно вызывают друг друга, либо с помощью ссылки, на которую нажали:

<a href="http://main.com/login.php">login</a>

или вызов местоположения заголовка:

header("Location: http://main.com/index.php");

login.php и index.php вызовите session_start() вверху, чтобы я мог поддерживать общие переменные сеанса во всех сценариях.

Теперь у меня есть jQuery в index.php для этого необходимо вызвать другой скрипт в корне сайта, util.php , используя ajax:

    ` galleryStatus2$.load('util.php', { 
      id         : g.user_id,
      op         : "register_keys",
      test_sk    : test_sk,   
      test_pk    : test_pk, 
      live_sk    : live_sk,  
      live_pk    : live_pk 
      },  `
 

Если я помещу session_start() в начало util.php он зависает, так что ясно, что я делаю здесь что-то не так.

Может ли кто-нибудь пролить свет на эту ситуацию и объяснить, почему я не могу поместить session_start в начало util.php ?

Спасибо.

Комментарии:

1. Одна конкретная ситуация, в которой это может произойти, — это когда два скрипта пытаются получить доступ к одному и тому же сеансу одновременно (используя стандартный сеанс на основе файлов).

2. Попробуйте вызвать session_close() , как только узнаете, что больше не изменяете сеанс, и то же самое касается вызова только session_start() тогда, когда вам нужно получить доступ к сеансу или выполнить запись. В качестве альтернативы, если это проблема с файловой системой, как упоминал @Jack, вы можете заменить обработчик сеанса для записи в ядро базы данных.

3. При зависании должен быть журнал. Пожалуйста, приложите это к вопросу.

4. Что еще более важно, попытайтесь выяснить, почему скрипт (без необходимости) зависает в конкретном сеансе. Скрипты должны выполняться только короткое время.

5. @Scuzzy Более важно установить, действительно ли необходим обработчик сеанса с поддержкой базы данных, поскольку у них есть свои особенности.