Как обрабатываются несколько запросов на один файл на сервере?

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

Если у меня есть файл PHP, хранящийся на сервере, что произойдет, если несколько пользователей начнут получать доступ к этому script в одно и то же время? Делать несколько запросов стек или их можно обрабатывать параллельно? Что я должен искать, чтобы лучше понять, как работают серверы?

Надеюсь, это имеет смысл!

Ответы

Ответ 1

Веб-сервер (например, Apache), как правило, может обрабатывать несколько запросов одновременно (по умолчанию используется 200 или 400 для Apache).

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

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

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

Ответ 2

Это в значительной степени не проблема, так как современные операционные системы с удовольствием позволят нескольким процессам одновременно читать данный файл. (т.е. они "обрабатываются" параллельно.)

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