параллелизм — параллельная копия файла PHP

Я работаю над веб-приложением PHP, моим первым веб-приложением. Один из процессов должен скопировать некоторые текстовые файлы в каталог назначения. В каталоге назначения он откроет текстовые файлы и покажет вывод в веб-браузере. Мне интересно, что произойдет, если два пользователя одновременно начнут процесс? Поскольку файлы ДОЛЖНЫ быть скопированы в каталог назначения и прочитаны оттуда. Я создаю уникальный каталог назначения каждый раз? Как это правильно сделать?

0

Решение

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

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

В этом случае, если вы хотите предотвратить одновременный запуск процесса вторым пользователем, вы можете использовать файл блокировки:

  1. Создайте файл блокировки, если он не существует
  2. Запустите процессы
  3. Отключить файл блокировки

Если файл блокировки существует, подождите, пока он не будет связан (удален), например:

while (file_exists('file.lock')) {
usleep(100000); // sleep 100ms
}
touch('file.lock');
// Execute processes here
unlink('file.lock');

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

1

Другие решения

Других решений пока нет …