php сомневается. что произойдет, если два человека одновременно получат доступ к одному и тому же скрипту?

#php #user-input #execution-time

#php #пользовательский ввод #время выполнения

Вопрос:

некоторое время назад я создал поисковую систему php, и теперь у меня есть сомнения в том, что я уже искал ее и видел много вопросов здесь, в stack overflow, говорящих о нескольких одновременных обращениях к php-скриптам, но только в отношении добавления, изменения и т. Д…

допустим, моей поисковой системе (или любому другому скрипту, который на основе пользовательского ввода генерирует разные ответы) потребуется 20 секунд, чтобы завершить поиск.

пользователь A обращается к скрипту

пользователь B обращается к скрипту на 10 секунд позже, чем пользователь A (поэтому скрипт еще не «ответил» пользователю A)

что произойдет? будет ли сервер «запускать другой экземпляр файла», и оба пользователя получат свои ответы или что-то будет перепутано?

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

Ответ №1:

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

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

1. я подумал, что если данные будут изменены, произойдет что-то плохое, но я был обеспокоен тем, что произойдет что-то плохое, даже если данные не были изменены, но, к счастью, это не так, спасибо за ваш ответ

Ответ №2:

сеанс каждого пользователя обрабатывается потоками. все находится в очереди, и ничего не происходит.

но в некоторых условиях могут возникнуть проблемы.

пример: пользователь запрашивает определенное поле в БД, но другой пользователь удаляет это поле, пока поток 1-го пользователя ожидает или приостанавливается. но это действительно rear, и если это произойдет, исключение будет throne, и наши скрипты обязаны его обработать.