Как обрабатывается несколько запросов к одному файлу на сервере? - PullRequest
14 голосов
/ 19 марта 2011

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

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

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

Ответы [ 2 ]

9 голосов
/ 19 марта 2011

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

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

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

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

5 голосов
/ 19 марта 2011

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

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

...