Почему session_start вызывает тайм-аут, когда один сценарий называет другой сценарий с помощью завихрения

Вместо max-content auto вы можете использовать auto 1fr и white-space:nowrap, как показано ниже:

dl {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-column-gap: 1em;
  grid-row-gap: 1em;
}

dt, dd {
  margin: 0;
  padding: 0;
}
.speaker {
  white-space:nowrap;
}

.speaker.stage-director {
  display: none;
}

.statement.stage-director {
  grid-column: span 2;
}
<dl>
  <dt class="speaker">ROMEO</dt>
  <dd class="statement">What, shall this speech be spoke for our excuse?
Or shall we on without a apology?</dd>

  <dt class="speaker stage-director"></dt>
  <dd class="statement stage-director">This is a long statement of the stage director</dd>

  <dt class="speaker">ROMEO</dt>
  <dd class="statement">Give me a torch: I am not for this ambling;
Being but heavy, I will bear the light.</dd>

  <dt class="speaker">The magic big cat</dt>
  <dd class="statement">I say nothing</dd>
  
  <dt class="speaker">MERCUTIO</dt>
  <dd class="statement">Nay, gentle Romeo, we must have you dance.</dd>
</dl>

5
задан Jrgns 31 October 2008 в 09:30
поделиться

3 ответа

Я не полностью понимаю, почему это происходит, но я решил его.

Эта ошибка описывает ту же проблему, которую я имею. У меня есть регистрация сценариев на другой сценарий, оба использования той же сессии, которая, по-видимому, останавливает PHP.

Так, прежде чем я сделаю целый вихревой сценарий сообщения, я звоню session_commit функция, таким образом заканчивая сессию сценариев выполнения вызова, и позволяя названному сценарию перезапустить сессию.

Сильный удар...

7
ответ дан 18 December 2019 в 07:32
поделиться

Из php руководства

http://php.net/manual/en/function.session-write-close.php

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

Таким образом, у Вас не может быть 2 использования сценариев то же внимание сессии то же время.

12
ответ дан 18 December 2019 в 07:32
поделиться

Я был укушен этим также. Я зафиксировал его благодаря информации, обеспеченной в stackoverflow.

У меня было две страницы, оба имели "session_start ()" наверху, и первое называло второе с завихрением, таким образом, я мог переменные POST к второму сценарию после проверки. Веб-сервер зависал, пока я не добавил "session_write_close ()".

Пример кода следует:

// IMPORTANT (OR ELSE INFINITE LOOP) - close current sessions or the next page will wait FOREVER for a write lock.
session_write_close();

// We can't use GET because we can't display the password in the URL.
$host = $_SERVER['HTTP_HOST'];
$uri  = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$url  = "http://$host$uri/formPage2.php?";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url); //append URL
curl_setopt($ch, CURLOPT_POST,TRUE);//We are using method POST
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_REQUEST, '', "&"));//append parameters    

curl_exec($ch); // results will be outputted to the browser directly
curl_close($ch);
exit();
2
ответ дан 18 December 2019 в 07:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: