О совместном доступе к файлам в PHP::Журнал СА 4.2017
www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Работа с Debian  

О Linux с любовью или Debian: через знание к любви

Конечно, одним лишь перечислением замечательных качеств любовь к Linux не возникнет. Для

 Читать далее...

Опрос  

Защита личных и клиентских данных: как мошенники используют ИИ и как защититься?

По данным RED Security, общее число кибератак на российские компании в 2024

 Читать далее...

Опрос  

Облачные инструменты для разработчиков

Эксперты ИТ-отрасли отвечают на вопросы «Системного администратора» > Как с помощью облака сделать

 Читать далее...

Опрос  

Рынок мобильных приложений: что будет актуальным в 2025 году?

Эксперты ИТ-отрасли отвечают на вопросы «Системного администратора» > Ваши прогнозы: чего ожидать от

 Читать далее...

Рынок труда  

Как успешно пройти все этапы собеседования на ИТ-должность?

По оценкам государства, дефицит ИТ-специалистов составляет от 740 тысяч до 1 миллиона

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 7446
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7714
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 5084
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3290
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 4083
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 4081
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6589
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3434
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3704
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7575
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10944
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12662
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14419
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9386
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7343
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5630
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4851
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3703
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3385
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3608
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 О совместном доступе к файлам в PHP

Архив номеров / 2017 / Выпуск №4 (173) / О совместном доступе к файлам в PHP

Рубрика: Разработка /  Веб-технологии   | Дополнительные материалы

Игорь Орещенков ИГОРЬ ОРЕЩЕНКОВ, инженер-программист, iharsw@tut.by

О совместном доступе к файлам в PHP

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

О совместном доступе к файлам в PHPЯзык программирования PHP на сегодняшний день занимает лидирующие позиции в области веб-разработок. На нем написаны популярнейшие универсальные CMS (WordPress, Joomla!, Drupal), с помощью которых в сжатые сроки создаются как персональные блоги, так и интернет-магазины. Язык PHP используется в разнообразных интернет-проектах, разработку которых упрощают богатые функциональностью фреймворки (Symphony, Laravel, Yii).

Однако сугубо практическая направленность этого языка программирования, лежащая в его основе и сопутствующая всему процессу развития, явилась поводом к формированию субъективных мнений в сообществе программистов, которые со временем приобрели популярность. Низкий порог вхождения – простота установки интерпретатора и создания простейшей работающей программы – привели к возникновению иллюзии о том, что язык программирования автоматически решает проблему сложности мира, в котором он применяется. В некоторой степени этому способствовали книги, на страницах которых процесс веб-разработки освещался в популярной форме [1].

Из-за этого начинающие программисты иногда забывают о многогранности контекста, в котором предстоит выполняться их разработкам, что в конечном счете приводит к ошибкам, выливающимся в нестабильную работу программного продукта. А опытные коллеги, которые смотрят на подобные фиаско со стороны, преувеличивают вину языка программирования, на котором велась разработка.

Что говорит теория

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

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

Одновременные обращения к одному и тому же ресурсу приводят к конкуренции между сценариями за доступ к этому ресурсу. В случае баз данных она регулируется сервером баз данных. Однако игнорирование конкуренции при работе сфайлами приводит к конфликтам.

В теории параллельного программирования выделяются два способа работы с общим ресурсом:

  • получение от ресурса информации, при которой его состояние остается неизменным (например, чтение содержимого файла);
  • изменение состояния ресурса (например, запись информации в файл).

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

Чтобы выполнить это условие, каждый процесс устанавливает на ресурс «разделяемую» (SHARED) блокировку. Она не мешает чтению состояния ресурса, но запрещает его изменение (см. рис. 1).

Рисунок 1. Разделяемая блокировка запрещает доступ к ресурсу только для процессов, которые запрашивают исключительную блокировку

Рисунок 1. Разделяемая блокировка запрещает доступ к ресурсу только для процессов, которые запрашивают исключительную блокировку

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

Таким образом, модифицировать ресурс одновременно может только один процесс, причем в ходе модификации не допускается даже чтение состояния этого ресурса. Для выполнения этого условия процесс, приступающий к изменению состояния, устанавливает на ресурс «исключительную» (EXCLUSIVE) блокировку. Она запрещает доступ к общему ресурсу со стороны всех остальных процессов (см. рис. 2).

Рисунок 2. Исключительная блокировка запрещает доступ к ресурсу со стороны любых процессов, кроме установившего эту блокировку

Рисунок 2. Исключительная блокировка запрещает доступ к ресурсу со стороны любых процессов, кроме установившего эту блокировку

Сказанное выше о блокировках является теоретическими сведениями, которые по-разному воплощаются в реальные программные продукты – операционные системы и языки программирования.

Статью целиком читайте в журнале «Системный администратор», №4 за 2017 г. на страницах 66-71.

PDF-версию данного номера можно приобрести в нашем магазине.


  1. Кухарчик А. PHP: обучение на примерах. – Мн.: Новое знание, 2004.
  2. Афонин С. М. Программирование на языке PHP. – М.: НТ Пресс, 2007.
  3. Официальная документация PHP – http://php.net/docs.php.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru