@websiller

Почему sleep() ведет себя странно?

Если написать в файле test.php следующее:

sleep(10);
echo "Готово";

А затем запустить скрипт одновременно в двух разных вкладках браузера, то та вкладка которую запустить последней будет сначала ждать пока отработает первый запрос (то есть будет ждать 10 секунд), а только потом начнет считать свои 10 секунд. В итоге время потраченное на ожидание завершения обоих запросов будет составлять 20 сек. Но почему? Ведь первый процесс нечего не должен знать о втором и наоборот. Они ведь запускаются параллельно. Теперь если создать два разных файла test.php и test2.php и запустить их одновременно, то все пройдет предсказуемо. Оба скрипта завершатся одновременно, через 10 секунд.
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Перед sleep закрывай сессию и не будет такой шняги.

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

Если ты второй запрос отправишь под другой сессией, например из другого браузера или в режиме инкогнито, то такой ерунды не будет...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Pjeroo
@Pjeroo
Веб-разработчик
Это все из-за сессий
Ответ написан
profesor08
@profesor08 Куратор тега PHP
Вот запускается у вас процесс php.exe и пока он не отработает, следующий кандидат в очереди будет ждать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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