Медленный ответ на запись в базу данных из php - PullRequest
1 голос
/ 22 августа 2009

Мои PHP-скрипты запущены на сервере WAMP. Вот что я делаю

  1. PHP скрипт A, который запрашивает базу данных и получает набор строк (я установил set_time_limit (0) // неограниченное время выполнения скрипта)
  2. На основе набора результатов я выполняю tcl-скрипт для каждой строки набора результатов
  3. Сценарий TCL занимает около минуты, он также вставляет некоторые данные в ту же базу данных
  4. Теперь одновременно, когда выполняется сценарий TCL, если я выполняю другой сценарий PHP, который записывает данные в базу данных, я не могу сделать это, так как время отклика слишком медленное. На самом деле он ожидает завершения сценария PHP / A / TCL
  5. Однако в это время считывание из базы данных выполняется быстро и быстро

У кого-нибудь есть предложения?

С уважением, Митхун

1 Ответ

4 голосов
/ 23 августа 2009

Сессия не может быть разделена одновременными сценариями. Любые новые запросы, которые пытаются session_start(), будут зависать в этой точке в ожидании завершения предыдущего сценария.

Поскольку вашему сценарию требуется неопределенное время для завершения, хорошей идеей будет <a href="http://www.php.net/session_write_close" rel="nofollow noreferrer">session_write_close</a>() сразу после получения всей необходимой ему информации из суперглобального $ _SESSION, чтобы параллельные запросы больше не зависали.

...