Я работаю над веб-приложением PHP, моим первым веб-приложением. Один из процессов должен скопировать некоторые текстовые файлы в каталог назначения. В каталоге назначения он откроет текстовые файлы и покажет вывод в веб-браузере. Мне интересно, что произойдет, если два пользователя одновременно начнут процесс? Поскольку файлы ДОЛЖНЫ быть скопированы в каталог назначения и прочитаны оттуда. Я создаю уникальный каталог назначения каждый раз? Как это правильно сделать?
Вы можете создать уникальный каталог, все зависит от вашей цели. Вы хотите, чтобы два разных пользователя могли выполнять его одновременно?
Базы данных обычно полезны в этих ситуациях, потому что они сделаны для одновременной деятельности и таблицы функций или даже блокировки строк.
В этом случае, если вы хотите предотвратить одновременный запуск процесса вторым пользователем, вы можете использовать файл блокировки:
Если файл блокировки существует, подождите, пока он не будет связан (удален), например:
while (file_exists('file.lock')) {
usleep(100000); // sleep 100ms
}
touch('file.lock');
// Execute processes here
unlink('file.lock');
Файлы блокировки обычно используются в файловых системах и приложениях, чтобы пользователи не могли изменять файл одновременно или запускать более одного экземпляра.
Других решений пока нет …