Разрешить запускать несколько экземпляров php-скрипта - PullRequest
5 голосов
/ 18 июля 2010

Я пытаюсь использовать ajax для одновременного выполнения нескольких запросов к php-скрипту, однако кажется, что он выполняет только 1 экземпляр за раз, и я не могу подключиться, чтобы выполнить следующий вызов, пока предыдущий не будет завершен. Что я должен сделать, чтобы заставить их делать их все одновременно? Я использую Apache (XAMPP) на Windows. Я также проверил это на своем Unix-сервере, и там происходит то же самое.

1 Ответ

15 голосов
/ 18 июля 2010

Теоретически, ничто не препятствует выполнению одного PHP-скрипта несколько раз параллельно, иначе у многих веб-сайтов будут большие проблемы; -)

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


Если ваш сценарий использует сеансы, а они основаны на файлах (по умолчанию) , эти сеансы могут вызвать такую ​​проблему: при использовании обработчика сеансов по умолчанию невозможно получить доступ к нескольким файлам. одни и те же данные сеанса (то есть данные сеанса, которые соответствуют данному пользователю) одновременно; это предотвращает переопределение одним скриптом данных другого и, вероятно, не должно быть отключено.

Итак, если ваш сценарий использует сеансы: можно ли вам прекратить использовать сеансы?
Если нет, попробуйте закрыть их, как только они вам не понадобятся - чтобы разблокировать файлы, которые используются для их хранения.

Вот цитата из справочной страницы session_write_close, об этом:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...